第一个Win32窗口程序实例,窗口创建过程
in C/C++ with 0 comment

第一个Win32窗口程序实例,窗口创建过程

in C/C++ with 0 comment

第一个Win32窗口程序

基本框架

#include <windows.h>
HINSTANCE g_hInstance = 0; //全局实例句柄


//窗口处理函数
LRESULT CALLBACK WndProc(
    HWND hWnd,// 窗口的句柄
    UINT msgID, // 消息的ID号
    WPARAM wParam, // 消息所对应的参数
    LPARAM lParam// 消息所对应的参数
    )
{
    switch (msgID)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
        //default:    

    }
    return DefWindowProc(hWnd, msgID, wParam, lParam);
}
//注册窗口类

void Register(LPSTR lpClassName, WNDPROC wndProc){
    WNDCLASSEX wce = { 0 };        //注册窗口类所用结构体
    wce.cbSize = sizeof(wce);   //结构体大小
    wce.cbClsExtra = 0;            //...缓冲区
    wce.cbWndExtra = 0;            //...缓冲区
    wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);  //背景色
    wce.hCursor = NULL;            //画刷
    wce.hIcon = NULL;            //小图标
    wce.hIconSm = NULL;            //大图标
    wce.hInstance = g_hInstance;    //本程序实例句柄
    wce.lpfnWndProc = WndProc;        //注册窗口函数名
    wce.lpszClassName = lpClassName;    //注册窗口类名称
    wce.lpszMenuName = NULL;            //菜单名
    wce.style = CS_HREDRAW | CS_VREDRAW;    //风格
    RegisterClassEx(&wce);                //注册窗口类
}


//创建窗口
HWND CreateMain(LPSTR lpClassName, LPSTR lpWndName)
{
    HWND hWnd = CreateWindowEx(
        0,              //类窗口大小
        lpClassName,  //已经注册的窗口
        lpWndName,    //窗口标题栏名称
        WS_OVERLAPPEDWINDOW, //窗口基本风格
        100,        //窗口左上角水平坐标
        100,        //窗口左上角垂直坐标
        700,        //窗口宽度
        500,        //窗口高度
        NULL,        //窗口父窗口句柄
        NULL,        //窗口菜单句柄
        g_hInstance, //应用程序实例句柄
        NULL        //窗口创建附加参数,一般为NULL
        );
    return hWnd;

}

//显示窗口
void Display(HWND hWnd)
{
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
}
//消息循环
void Message(){
    MSG nMsg = { 0 };
    while (GetMessage(&nMsg, NULL, 0, 0))
    {
        TranslateMessage(&nMsg);
        DispatchMessage(&nMsg);
    }


}



//入口函数
int WINAPI WinMain(
    HINSTANCE hIns,//当前程序的实例句柄
    HINSTANCE hPreInstance,//当前程序父实例句柄
    LPSTR lpCmdLine,//命令行参数字符串
    int nCmdShow //窗口的显示方式
    )

{
    g_hInstance = hIns;
    //注册窗口类

    Register("Main", WndProc);
    //创建窗口
    HWND hWnd = CreateMain("Main", "Window");
    //显示窗口
    Display(hWnd);
    //消息循环
    Message();

    return 0;
}

运行效果

win325.jpg

Responses