C++ Win32 API 控制消息

标签 c++ api winapi

我从 Win32 api 开始,使用以下代码向我的主窗口添加一个按钮控件:


 HWND boton = CreateWindow(
    "BUTTON",   //
    "Caption",       // 
    WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,  // Styles.
    250,         // x position.
    10,         // y position.
    100,        // Button width.
    40,        // Button height.
    hwnd,       // Parent window.
    NULL,       // No menu.
    (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
    NULL);      // Pointer not needed.

我怎样才能给它分配一个ID,这样我就可以在循环中获取消息,在消息循环中,我试图将消息捕获为WM_COMMAND,但我也没有得到任何我尝试过WM_NOTIFY的结果。

最佳答案

要为其分配 ID,您必须使用 hMenu 参数。如果您指定该窗口将是子窗口(即使用 WS_CHILD),则 hMenu 参数将被解释为该窗口的整数 ID。另外,提供 BS_NOTIFY 样式。


HWND boton = CreateWindow (
    "BUTTON", 
    WS_TAPSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | BS_NOTIFY,
    250, 10, 100, 40,
    hwnd,
    (HMENU)101,  // This becomes the Control ID
    (HINSTNACE)GetWindowLong(hwnd,GWL_HINSTANCE),
    NULL);

编辑:特别喊话 Heath Hunnicutt有关 BS_NOTIFY 的信息。

关于C++ Win32 API 控制消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1712753/

相关文章:

c++ - 是否有(足够快的)解决方法来乘以超出内存限制的矩阵?

c++ - 无法在Debian Linux中编译C++ 17

api - Twitter 主页/时间线限制 200?

c# - 通过坐标获取窗口

windows - 使用调试器如何从父进程获取子进程的 PID

c++ - 为什么这个volatile变量的地址一直是1?

c++ - Windows 上不可读的文件属性

php - Laravel Passport - tokensExpireIn、refreshTokensExpireIn 和personalAccessTokensExpireIn 之间有什么区别

api - Blogger Api V3 中的分页

Delphi Loadlibrary 返回 0 (LastErrorcde=3221225616) 这是什么意思?