Как сделать кнопку Win32 API выбранной программно? - PullRequest
4 голосов
/ 24 сентября 2010

У меня есть кнопка, если я скажу, нажмите кнопку-флажок, тогда она должна сфокусироваться на одной из двух кнопок.

Я не уверен, как использовать 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 ]

3 голосов
/ 24 сентября 2010

Я не уверен, что вы точно понимаете, о чем вы спрашиваете, но, возможно,

Состояние выделения указывает, подсвечивается ли кнопка, как если бы пользователь нажал ее.Он не указывает, имеет ли кнопка фокус, и не указывает, отмечена ли кнопка или нет.

Если вы действительно хотите это сделать, используйте макрос Button_SetState .


На всякий случай:

  • Если выЧтобы установить состояние проверки для кнопки, используйте макрос Button_SetCheck .
  • Если вы хотите установить фокус на кнопке, используйте SetFocus Win32 API.
  • Примечание. Выше я упомянул пару макросов, вместо этого вы можете использовать SendMessage и передать соответствующее сообщение, как описано в сообщении в MSDN.
2 голосов
/ 15 мая 2012

Чтобы сделать кнопку по умолчанию в win32 (что, я думаю, ваш вопрос), можно просто сделать, отправив кнопке сообщение BM_SETSTYLE с BS_DEFPUSHBUTTON в качестве WPARAM ...

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

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

Надеюсь, это поможет...; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...