单击时如何使复选框更改其状态?

时间:2015-06-24 02:00:42

标签: c++ winapi

我使用以下代码在WinAPI中创建了一个复选框:

HWND checkbox = CreateWindowEx(NULL, "BUTTON", "Click Me!", WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 10, 10, 60, 20, hWnd, NULL, hInstance, NULL);

我希望复选框在点击时自动更改其状态,但它没有!

我在MSDN上没有找到任何示例,因此如何在单击时使复选框更改其状态?我应该处理WM_COMMAND消息,看看它处于什么状态,然后将其状态更改为相反的状态?

1 个答案:

答案 0 :(得分:6)

使用BS_AUTOCHECKBOX样式代替BS_CHECKBOX

Button Styles

  

BS_AUTOCHECKBOX
  创建一个与复选框相同的按钮,但每次用户选中复选框时,检查状态会自动在已选中和已清除之间切换。

Button States

  

按钮状态的元素

     

按钮的状态可以通过其焦点状态,推送状态和检查状态来表征。

     

...

     

检查状态
  ...
  系统会自动更改自动按钮的检查状态,但应用程序必须更改非自动按钮的检查状态。

     

按钮状态的更改

     

当用户选择按钮时,通常需要改变按钮的一个或多个状态元素。 系统自动更改...所有自动按钮的检查状态。应用程序必须进行所有其他状态更改,同时考虑按钮的类型,样式和当前状态。