Windows编程C++之第一个Windows程序

来源:互联网 发布:网络运营岗位的测试题 编辑:程序博客网 时间:2024/06/02 14:42
    这篇文章主要是来介绍如何create一个最基本的windows程序。它创建的窗口是最基本的空白窗口,下面是对应的代码。
#ifndef UNICODE#define UNICODE#endif #include <windows.h>LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow){    // 注册window类    const wchar_t CLASS_NAME[]  = L"Sample Window Class";    WNDCLASS wc = { };    wc.lpfnWndProc   = WindowProc;    wc.hInstance     = hInstance;    wc.lpszClassName = CLASS_NAME;    RegisterClass(&wc);    // 创建窗口    HWND hwnd = CreateWindowEx(        0,                              // 窗口的风格        CLASS_NAME,                     // 窗口类        L"Learn to Program Windows",    // 窗口名字            WS_OVERLAPPEDWINDOW,            // 窗口风格        // 大小和位置        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,        NULL,       // 父窗口           NULL,       // 菜单        hInstance,  // 句柄        NULL        // 附加的应用程序数据        );    if (hwnd == NULL)    {        return 0;    }    ShowWindow(hwnd, nCmdShow);    // 运行循环loop    MSG msg = { };    while (GetMessage(&msg, NULL, 0, 0))    {        TranslateMessage(&msg);        DispatchMessage(&msg);    }    return 0;}LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){    switch (uMsg)    {    case WM_DESTROY:        PostQuitMessage(0);        return 0;    case WM_PAINT:        {            PAINTSTRUCT ps;            HDC hdc = BeginPaint(hwnd, &ps);            FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));            EndPaint(hwnd, &ps);        }        return 0;    }    return DefWindowProc(hwnd, uMsg, wParam, lParam);}
wWinMain 是程序的入口点。当程序启动时,它注册了一些关于应用程序窗口行为的信息。WindowProc是一个非常重要的函数,他定了窗口的具体行为,包括外表,与用户的交互等等。如果窗口创建成功,程序就会进入一个循环,直到用户关闭窗口,循环才会结束。其中,DispatchMessage把消息传递给WindowsProc。
0 0
原创粉丝点击