怎么样使用API,让对于一个CHECKBOX资源窗口选中或反选?

windcsn 2005-08-17 03:51:12
怎么样使用API,让对于一个CHECKBOX资源窗口选中或反选?只能使用WINDOWS的API函数
EnableWindow只能让窗口变灰或active,不能选中
...全文
491 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kenskens 2005-08-17
只要有CheckBox的句柄,直接给它SendMessage.

楼上哪弄的简体版programming windows,给我发一份好不好kenskens@163.com,开贴给分啊!
回复
i_noname 2005-08-17
programming windows
--------------------------------------------------
复选框


复选框是一个文字方块,文字通常出现在复选框的右边(如果您在建立按钮时指定了BS_LEFTTEXT样式,那么文字会出现在左边;您也许将用BS_RIGHT直接调整文字来组合此样式)。复选框通常用于允许使用者对选项进行选择的应用程序中。复选框的常用功能如同一个开关:单击框一次将显示勾选标记,再次单击清除勾选标记。

复选框最常用的两种样式是BS_CHECKBOX和BS_AUTOCHECKBOX。在使用BS_CHECKBOX时,您需要自己向该控件发送BM_SETCHECK消息来设定勾选标记。wParam参数设1时设定勾选标记,设0时清除勾选标记。通过向该控件发送BM_GETCHECK消息,您可以得到该复选框的目前状态。在处理来自控件的WM_COMMAND消息时,您可以用如下的指令来翻转X标记:

SendMessage ((HWND) lParam, BM_SETCHECK, (WPARAM)

!SendMessage ((HWND) lParam, BM_GETCHECK, 0, 0), 0) ;

注意第二个SendMessage呼叫前面的运算子「!」,其中lParam是在WM_COMMAND消息中传给使用者窗口消息处理程序的子窗口句柄。如果您以后又想知道按钮的状态,那么可以向它发送另一条BM_GETCHECK消息;您也可以将目前状态储存在您的窗口消息处理程序中的一个静态变量里,或者向它发送BM_SETCHECK消息来初始化带勾选标记的BS_CHECKBOX复选框:

SendMessage (hwndButton, BM_SETCHECK, 1, 0) ;

对BS_AUTOCHECKBOX样式,按钮自己触发勾选标记的开和关,所以您的窗口消息处理程序可以忽略WM_COMMAND消息。当您需要按钮目前的状态时,可以向控件发送BM_GETCHECK消息:

iCheck = (int) SendMessage (hwndButton, BM_GETCHECK, 0, 0) ;

如果该按钮被选中,则iCheck的值为TRUE或者非零数;如果按钮末被选中,则iCheck的值为FALSE或0。

其余两种复选框样式是BS_3STATE和BS_AUTO3STATE,正如它们名字所暗示的,这两种样式能显示第三种状态-复选框内是灰色-它出现在向控件发送wParam等于2的WM_SETCHECK消息时。灰色是向使用者表示此框不能被选本章的或者禁止使用。

复选框沿矩形的左边框对齐,并集中在呼叫CreateWindow时规定的矩形的顶边和底边之间,在该矩形内的任何地方按下鼠标都会向其父窗口发送一个WM_COMMAND消息。复选框的最小高度是一个字符的高度,最小宽度是文字中的字符数加2。

回复
wangk 2005-08-17
sends a BM_SETCHECK message to set the check state of a radio button or check box.

lResult = SendMessage( (HWND) hWndControl, // handle to destination control (UINT) BM_SETCHECK,(WPARAM) wParam,(LPARAM) lParam // = 0);

wParam
Specifies the check state. This parameter can be one of the following values.
BST_CHECKED
Sets the button state to checked.
BST_INDETERMINATE
Sets the button state to grayed, indicating an indeterminate state. Use this value only if the button has the BS_3STATE or BS_AUTO3STATE style.
BST_UNCHECKED
Sets the button state to cleared.
lParam
This parameter is not used.
回复
CheckDlgButton
回复
windcsn 2005-08-17
第二个使用的MFC类,我也知道
回复
windcsn 2005-08-17
setfocus不行呀
回复
aix8848 2005-08-17
((CButton*)this->GetDlgItem(IDC_RADIO_FRONT))->SetCheck(FALSE);
回复
dirdirdir3 2005-08-17
SetFocus()
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-08-17 03:51
社区公告
暂无公告