我使用以下代码在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
消息,看看它处于什么状态,然后将其状态更改为相反的状态?
答案 0 :(得分:6)
使用BS_AUTOCHECKBOX
样式代替BS_CHECKBOX
。
BS_AUTOCHECKBOX
创建一个与复选框相同的按钮,但每次用户选中复选框时,检查状态会自动在已选中和已清除之间切换。
按钮状态的元素
按钮的状态可以通过其焦点状态,推送状态和检查状态来表征。
...
检查状态
...
系统会自动更改自动按钮的检查状态,但应用程序必须更改非自动按钮的检查状态。按钮状态的更改
当用户选择按钮时,通常需要改变按钮的一个或多个状态元素。 系统自动更改...所有自动按钮的检查状态。应用程序必须进行所有其他状态更改,同时考虑按钮的类型,样式和当前状态。