欢迎访问:常州市武进区嘉泽中心小学网站 !今天是:
栏目列表
您现在的位置是:首页>>教师>>计算机技术>>程序设计>>杂项>>文章内容
Windows窗口框架(API入门一)
发布时间:2008-11-20   点击:   来源:本站原创   录入者:佚名
 

#include <windows.h>
#include <stdlib.h>
#include <string.h>

//声明函数
//////////////////////////////////////////////////////////////////
long WINAPI WndProc                                //消息处理函数
            (
            HWND hWnd,
            UINT iMessage,
            UINT wParam,
            LONG lParam
            );
BOOL InitWindowsClass(HINSTANCE hInstance);         //初始化窗口类
BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);//初始化窗口
///////////////////////////////////////////////////////////////////
HWND hWndMain;


int WINAPI WinMain (                            //主函数
                    HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine,
                    int nCmdShow
                    )

{
    MSG Message;
    if(!InitWindowsClass(hInstance))
       return FALSE;
    if(!InitWindows(hInstance, nCmdShow))
       return FALSE;
    while(GetMessage(&Message,0,0,0))//消息循环
    {
        TranslateMessage(&Message);
        DispatchMessage(&Message);
    }
    return Message.wParam;
}


//定义函数
///////////////////////////////////////////////////////////////////
long WINAPI WndProc(
                    HWND hWnd,
                    UINT iMessage,
                    UINT wParam,
                    LONG lParam
                    )
{
    HDC hDC;
    HBRUSH hBrush;
    HPEN hPen;
    PAINTSTRUCT PtStr;
    POINT points[6]={{100,212},{70,227},{70,250},{130,250},{130,227},{100,212}};
   
    switch(iMessage)
    {
        case WM_PAINT:
            hDC=BeginPaint(hWnd,&PtStr);
            hPen=(HPEN)GetStockObject(NULL_PEN);
            SelectObject(hDC,hPen);
            hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);
            SelectObject(hDC,hBrush);
            LineTo(hDC,50,50);
            DeleteObject(hPen);
            hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
            SelectObject(hDC,hPen);
           
            LineTo(hDC,150,50);
            LineTo(hDC,100,137);
            LineTo(hDC,50,50);
            Polyline(hDC,points,6);
            Arc(hDC,63,137,138,212,100,137,100,137);
            Pie(hDC,213,137,288,212,240,137,260,137);
            Rectangle(hDC,213,212,287,250);
            RoundRect(hDC,213,100,287,137,20,20);
            DeleteObject(hPen);
            DeleteObject(hBrush);
            EndPaint(hWnd,&PtStr);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
                 return 0;
            default:
                 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
                
           
    }
}


BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
    HWND hWnd;
    hWnd=CreateWindow("WinFill",    //窗口类名
                     "填充示例",    //窗口实例的标题名
                     WS_OVERLAPPEDWINDOW, //窗口风格
                     CW_USEDEFAULT, //窗口左上角坐标为默认值
                     0,
                     CW_USEDEFAULT, //窗口的高为默认值
                     0,             //宽
                     NULL,          //无父窗口
                     NULL,          //无主菜单
                     hInstance,     //创建此窗口的应用程序的当前句柄
                     NULL           //不使用该值 
                     );
    if(!hWnd)
       return FALSE;
   // hWndMain=hWnd;
   
    ShowWindow(hWnd,nCmdShow); //显示窗口
    UpdateWindow(hWnd); //绘制用户区
    return TRUE;
                    
}


BOOL InitWindowsClass(HINSTANCE hInstance)
{
    WNDCLASS WndClass;
    WndClass.cbClsExtra=0;
    WndClass.cbWndExtra=0;
    WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
    WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    WndClass.hIcon=LoadIcon(NULL,"END");
    WndClass.hInstance=hInstance;
    WndClass.lpfnWndProc=WndProc;
    WndClass.lpszClassName="WinFill";
    WndClass.lpszMenuName=NULL;
    WndClass.style=CS_HREDRAW|CS_VREDRAW;
    return RegisterClass(&WndClass);
   
}


附件:
    关闭窗口
    打印文档
    账号登录
    保持登录 忘记密码?
    账号与武进教师培训平台同步