Windows 编程应用程序示例

#include <tchar.h>
#include <Windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(
    HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, 
    int nCmdShow
    )
{
    WNDCLASSEX wcex;
    HWND hWnd;
    MSG msg;
    TCHAR szWindowClass[] = L"窗口示例";        //窗口类名
    TCHAR szTitle[] = L"My Windows";            //窗口标题名

    //--------------以下初始化窗口类-----------
    wcex.cbSize = sizeof(WNDCLASSEX);      // 窗口类大小
    wcex.style = 0;                        // 窗口类型为默认类型
    wcex.lpfnWndProc = WndProc;            // 窗口处理函数为 Wndproc
    wcex.cbClsExtra = 0;                   // 窗口类无扩展
    wcex.cbWndExtra = 0;                   // 窗口实例无扩展
    wcex.hInstance = hInstance;            // 当前实例句柄
    wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));    // 窗口图标为默认图标
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);                            // 窗口采用箭头光标
    wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);              // 窗口背景为白色
    wcex.lpszMenuName = NULL;                                              // 窗口中无菜单
    wcex.lpszClassName = szWindowClass;                                    // 窗口类名为窗口示例
    wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));        // 窗口小图标为默认图标

    //------------------- 窗口类注册 ----------------
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL, _T("窗口类注册失败"), _T("窗口注册"), NULL);
        return 1;
    }

    //------------------ 创建窗口 -------------------
    hWnd = CreateWindow(
        szWindowClass,                        // 窗口类名
        szTitle,                            // 窗口实例的标题名
        WS_OVERLAPPEDWINDOW,                // 窗口的风格
        CW_USEDEFAULT,CW_USEDEFAULT,        // 窗口左上角坐标的默认值
        CW_USEDEFAULT,CW_USEDEFAULT,        // 窗口的高和宽为默认值
        NULL,                                // 此窗口无父窗口
        NULL,                                // 此窗口无主菜单
        hInstance,                            // 创建此窗口应用程序的当前句柄
        NULL                                // 不使用该值
        );
    if(!hWnd)            // 若创建窗口失败则发出警报                                
    {
        MessageBox(NULL, L"创建窗口失败", _T("创建窗口"), NULL);
        return 1;
    }

    ShowWindow(hWnd, nCmdShow);            // 显示窗口
    UpdateWindow(hWnd);                 // 绘制窗口用户区
    while (GetMessage(&msg, NULL, 0, 0))        // 消息循环
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return(int) msg.wParam;                // 程序终止时将信息返回系统
}

//----------------- 窗口函数代码 -----------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_DESTROY:
        PostQuitMessage(0);                     // 调用 PostQuitMessage 发出 WM_QUIT 消息
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);      // 默认采用系统消息默认处理函数
        break;
    }
    return 0;
}
最后修改:2019 年 04 月 13 日 06 : 33 PM

发表评论