我从 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/