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

Jam*_*mes 0 c++ winapi

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

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

我希望复选框在点击时自动更改其状态,但事实并非如此!

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

Jon*_*ter 6

使用BS_AUTOCHECKBOX样式而不是BS_CHECKBOX.

按钮样式

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

按钮状态

按钮状态的元素

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

...

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

对按钮状态的更改

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