Windows c++界面开发初学(六)win32

1、步骤

  • 首先需要创建一个按钮。

    按钮相当于一个Window,因此也是用CreateWindow函数创建按钮,此时dwStyle参数要设为WS_VISIBLE和WS_CHILD,具体参照Window Styles文档,而hWndParent参数要设为hwnd,即父窗口的句柄。

  • 响应按钮消息

    点击按钮时会发送WM_COMMAND消息,然而如何获取按钮的id呢?可以在创建按钮时,将hMenu参数设置为id,然后在消息处理函数中设置当LOWORD(wParam)为按钮的id时做一些事情。

2、代码

//消息处理函数
LRESULT CALLBACK WindowProc(
    _In_ HWND hwnd,
    _In_ UINT uMsg,
    _In_ WPARAM wParam,
    _In_ LPARAM lParam
) {
    switch (uMsg)
    {
        //在创建窗口时创建按钮
        case WM_CREATE:
        {
            HWND hwndButton = CreateWindow(
                L"BUTTON",
                L"点我",
                WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
                200,
                180,
                100,
                50,
                hwnd,
                (HMENU)ID_BTN,
                (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
                NULL);
        }
        break;
        case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
            case ID_BTN:
            {
                //可以显示一个弹框
                //MessageBox(hwnd, L"你点击了一个按钮", L"哈哈", MB_YESNO | MB_ICONQUESTION);
                //也可以设置button的文字,需要用到SendMessage函数,其中操作目标的句柄应设为当前控件的句柄
                SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"已点击");
                break;
            }
            default:
                break;
            }
        }
        break;
        case WM_DESTROY:
            //因为hRoot已被分配给窗口,将自动销毁,否则需要调用DestroyMenu(hRoot);
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
            break;
        }
    return 0;
}

3、运行效果

这里写图片描述
设置点击按钮改变按钮文字
这里写图片描述
设置点击按钮弹出消息框
这里写图片描述

猜你喜欢

转载自blog.csdn.net/unirrrrr/article/details/81349734
今日推荐