1-5 应用程序举例

 

  主要内容:Windows应用程序框架的详细代码 

 

  1.创建应用程序框架
    #include <windows.h> //包含应用程序中所需要的数据类型和数据结构的定义
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函数说明

------------------以下初始化、注册窗口类、创建窗口以及建立消息循环--------------------

 

int WINAPI WinMain(
        HINSTANCE hInstance,    //当前实例句柄
        HINSTANCE hPrevInst,    //表示当前实例的前一个实例的句柄
        LPSTR lpszCmdLine,        //指定传递给应用程序的命令行参数
        int nCmdShow            //指定程序的窗口应该如何显示,例如最大化、最小化、隐藏等    
    )
    {
        HWND hwnd;
        MSG msg;
        WNDCLASS wndclass;
        
        char lpszClassName[] = "窗口"; //窗口类名
        char lpszTitle[] = "My Windows";    
        
        //窗口类的定义
        wndclass.style = 0;        //窗口类型为缺省类型
        wndclass.lpfnWndProc = WndProc;    //定义窗口处理函数
        wndclass.cbClsExtra = 0;         //窗口类无扩展
        wndclass.cbWndExtra = 0;        //窗口实例无扩展
        wndclass.hInstance = hInstance;    //当前实例句柄
        wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
                                        //窗口的最小化图标为缺省图标
        wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
                                        //窗口采用箭头光标
        wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
                                        //窗口背景为白色
        wndclass.lpszMenuName = NULL;    //窗口中无菜单
        wndclass.lpszClassName = lpszClassName;    //窗口类名为"窗口"
        
        //以下进行窗口类的注册
        if(!RegisterClass(&wndclass)){
            //如果注册失败则发出警告
            MessageBeep(0);     //响铃
            return FALSE;
        }
        
        //创建窗口
        hwnd = CreateWindow(
            lpszClassName,            //窗口类名
            lpszTitle,                //窗口实例标题名
            WS_OVERLAPPEDWINDOW,    //窗口的风格
            CW_USEDEFAULT,
            CW_USEDEFAULT,            //窗口左上角坐标为缺省值
            CW_USEDEFAULT,
            CW_USEDEFAULT,            //窗口的高和宽为缺省值
            NULL,                    //此窗口无父窗口
            NULL,                    //此窗口无主菜单
            hInstance,                //创建此窗口的应用程序的当前句柄
            NULL                    //不使用该值
        )
        
        //显示窗口
        ShowWindow(hwnd, nCmdShow);
        
        //绘制用户区
        UpdateWindow(hwnd);
        
        //建立消息循环
        while(GetMessage(&Msg, NULL, 0, 0)){
            TranslateMessage(&Msg);
            DispatchMessage(&Msg);
        }
        
        //消息循环结束即程序终止时将信息返回系统
        return Msg.wParam;

    }
View Code

 

--------------------初始化、注册窗口类、创建窗口以及建立消息循环---------------------- 

 

  2.窗口函数

LRESULT CALLBACK WndProc(
        HWND hwnd,            //表示哪一个窗口发过来的消息
        UINT message,        //表示什么消息
        WPARAM wParam,        //消息的字参数
        LPARAM lParam        //消息的长字参数
    ){
        switch(message){
            //消息DESTROY的处理
            case WM_DESTROY:
                PostQuitMessage(0);
            //缺省时采用系统消息缺省处理函数
            default:
                return DefWindowProc(hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
View Code

 

 

 

你可能感兴趣的:(1-5 应用程序举例)