tags:

views:

50

answers:

1

I have a button, if i were to say click a checkbox, it should then give one of two buttons focus.

I am not sure how to use BM_SETSTATE - if that is the way to do it.

// 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

any help is greatly appreciated! thanks much!

+1  A: 

I'm not sure if you understand exactly what you're asking, but maybe.

The highlight state indicates whether the button is highlighted as if the user had pushed it. It does not indicate whether the button has focus nor does it indicate whether the button is checked or not.

If you really want to do this though, use the Button_SetState macro.


Just in case:

  • If you want to set the check state on a button use the Button_SetCheck macro.
  • If you want to set the focus on a button use the SetFocus Win32 API.
  • Note: Above I mentioned a couple macros, you can instead use SendMessage and pass the appropriate message as documented on the message in MSDN.
Brian R. Bondy
Yes, I want the focus, so that if the end user hits enter, I want it to have a default action (in this case, the one with less consequences)
Jonathan Weinraub
@Jonathan: In that case you want the second bullet point under the horizontal bar (SetFocus).
Brian R. Bondy
Thanks Brian, that did the trick. I couldn't find the documentation on SetFocus anywhere for some reason!
Jonathan Weinraub
@Jonathan: no prob
Brian R. Bondy