windows程序设计 显示一个窗口

#include <windows.h>

HINSTANCE hinst;

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

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    static TCHAR szClassName[] = TEXT("MainWClass");
    WNDCLASSEX wcx;//窗口类
    HWND hwnd;//窗口句柄
    MSG msg;//消息
    hinst = hInstance;//应用程序实例句柄,保存为全局变量。

    //填充窗口类的数据结构
    wcx.cbSize = sizeof(wcx);//结构体大小
    wcx.style = CS_HREDRAW | CS_VREDRAW;//样式:窗口大小改变时重绘界面
    wcx.lpfnWndProc = MainWndProc;//窗口消息处理函数
    wcx.cbClsExtra = 0;//不使用类内存
    wcx.cbWndExtra = 0;//不使用窗口内存
    wcx.hInstance = hInstance;//所属的应用程序实例句柄
    wcx.hIcon = LoadIcon(NULL, IDI_APPLICATION);//图标:默认
    wcx.hCursor = LoadCursor(NULL, IDC_ARROW);//光标:默认
    wcx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//背景:白色
    wcx.lpszMenuName = NULL;//菜单:不使用
    wcx.lpszClassName = szClassName;//窗口类名
    wcx.hIconSm = (HICON)LoadImage(hInstance,
        MAKEINTRESOURCE(5),
        IMAGE_ICON,
        GetSystemMetrics(SM_CXSMICON),
        GetSystemMetrics(SM_CYSMICON),
        LR_DEFAULTCOLOR);//小图标

    //注册窗口
    if(!RegisterClassEx(&wcx))
    {
        return 1;
    }

    //创建窗口
    hwnd = CreateWindow(
        szClassName,//窗口名
        TEXT("BASE"),//窗口标题
        WS_OVERLAPPEDWINDOW,//窗口样式
        CW_USEDEFAULT,//水平位置X:默认
        CW_USEDEFAULT,//垂直位置Y:默认
        CW_USEDEFAULT,//宽度:默认
        CW_USEDEFAULT,//高度:默认
        NULL,//父窗口:无
        NULL,//菜单:使用窗口类的菜单
        hInstance,//应用程序实例句柄
        NULL//窗口创建时数据:无
        );

    if(!hwnd)
    {
        return 1;
    }

    //显示窗口
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    //消息循环
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);//翻译消息
        DispatchMessage(&msg);//分发消息
    }

    return 0;
}

LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
    switch(umsg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    }
    return DefWindowProc(hwnd, umsg, wParam, lParam);
}
原文地址:https://www.cnblogs.com/xuqiulin/p/10171927.html