0

我一直在尝试创建一个具有默认行为的按钮,即当用户按下 ENTER 时,该按钮被触发。我使用 WS_TABSTOP 样式创建了按钮,并向其发送了带有 BS_DEFPUSHBUTTON 的 BM_SETSTYLE 消息具有 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);
4

2 回答 2

4

我正在尝试处理在您的控件的 WndProc 中获取WM_GETDLGCODE消息。示例代码:WM_KEYDOWNVK_RETURN

case WM_GETDLGCODE: {
  if(wParam==VK_RETURN) {
    return DLGC_WANTALLKEYS;
  }
}
break;
于 2012-11-20T15:07:51.793 回答
1

BS_DEFPUSHBUTTON 只是添加到按钮的标志。您描述的行为(以及许多其他字段导航行为)实际上是由 实现的IsDialogMessage,您免费获得的是一个模态对话框。

如果您尝试在自己的窗口类(或无模式对话框)中处理此问题,则可以将 IsDialogMessage 添加到消息循环中以获得对话框样式的处理。

于 2012-06-13T19:45:39.307 回答