我一直在尝试创建一个具有默认行为的按钮,即当用户按下ENTER时,该按钮被触发。 我创建了具有WS_TABSTOP样式的按钮,并向其发送了BM_SETSTYLE消息,其中BS_DEFPUSHBUTTON具有WPARAM参数 但它仍然没有用。
HWND hwnd_Ok = CreateWindow("button", "Ok", WS_VISIBLE | WS_CHILD | WS_TABSTOP, 285, 195, 70, 25, hwnd, (HMENU)OK_BUTTON, NULL, NULL);
SendMessage(hwnd_Ok, BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON, TRUE);
答案 0 :(得分:4)
我正在尝试处理WM_GETDLGCODE
,以便在控件的WndProc中使用WM_KEYDOWN
消息获取VK_RETURN
。示例代码:
case WM_GETDLGCODE: {
if(wParam==VK_RETURN) {
return DLGC_WANTALLKEYS;
}
}
break;
答案 1 :(得分:1)
BS_DEFPUSHBUTTON只是添加到按钮的标志。您描述的行为(以及许多其他字段导航行为)实际上由IsDialogMessage
实现,您免费获得的是模式对话框。
如果您尝试在自己的窗口类(或无模式对话框)中处理此问题,可以将IsDialogMessage添加到消息循环中以获得对话式样处理。