如何以编程方式选择Win32 API按钮?

时间:2010-09-24 19:53:51

标签: winapi

我有一个按钮,如果我要点击一个复选框,它应该给两个按钮中的一个焦点。

我不确定如何使用BM_SETSTATE - 如果是这样的话。

// snip...
    case WM_COMMAND:
    switch (LOWORD(wParam))
    {
    case IDC_CHECK:
        if (IsDlgButtonChecked(hDlg, IDC_CHECK))
        {
            EnableWindow(GetDlgItem(hDlg, IDOK), TRUE);
            EnableWindow(GetDlgItem(hDlg, IDCANCEL), TRUE);
            BM_SETSTATE // ... ?? 
        }
        else  
// ... snip

非常感谢任何帮助!非常感谢!

2 个答案:

答案 0 :(得分:3)

我不确定你是否理解你所要求的,但也许。

突出显示状态指示按钮是否突出显示,就像用户按下了按钮一样。 它不指示按钮是否具有焦点,也不指示按钮是否被选中。

如果你真的想这样做,请使用Button_SetState宏。


以防万一:

  • 如果要在按钮上设置检查状态,请使用Button_SetCheck宏。
  • 如果要将焦点设置在按钮上,请使用SetFocus Win32 API。
  • 注意:上面我提到了几个宏,您可以使用SendMessage并传递MSDN中消息中记录的相应消息。

答案 1 :(得分:2)

要在win32中创建一个默认按钮(我想这是你的问题),可以通过发送带有BS_DEFPUSHBUTTON作为WPARAM的BM_SETSTYLE消息按钮来完成......

HWND hwndButton = CreateWindow("button", "OK", WS_VISIBLE |...);

SendMessage(hwndButton, BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON, TRUE);

希望这有助于...; - )