【发布时间】:2021-08-31 07:59:37
【问题描述】:
我想在我的窗口中添加一个按钮,这是它的代码:
HWND hwndButton = CreateWindow(
L"BUTTON", // Predefined class; Unicode assumed
L"Check for update", // Button text
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Styles
10, // x position
30, // y position
150, // Button width
30, // Button height
hWnd, // Parent window
NULL, // No menu.<----------
(HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
NULL); // Pointer not needed.
现在,我想让窗口做点什么,如果按钮被按下,所以我找到了方法:
UINT IsDlgButtonChecked( HWND hDlg, int nIDButton );
或
HWND hDlg,
int nIDFirstButton,
int nIDLastButton,
int nIDCheckButton
);
问题:在这两种方法中都有一个 ID,但我找不到任何关于从哪里获取 ID、lastbuttonid、firstbuttonid 和按钮 ID 本身的信息。另外,我知道在上面代码中的箭头处,注释“No menu.
【问题讨论】:
-
您自己为
ID_RADIOBTN1(和其他ID)定义“替换”令牌。通常,这些定义将在头文件中,看起来像#define ID_MYBUTTON1 123。然后将这些值作为hMenu参数传递。您可以为按钮使用(几乎)从(大约)10 到0x7FFF(32767) 范围内的任何值。 (系统对“OK”和“Cancel”等标准按钮使用低值。) -
... 或者,对于“更纯粹”的 C++ 系统,您可以使用
constexpr unsigned int ID_MYBUTTON1 = 123;。