Button&CheckBox&RadioBox

按钮

按钮是一个矩形,包括了CreateWindow呼叫中窗口文字参数所指定的文字。该矩形占用了CreateWindow中的全部高度与宽度,而文字在举行的中心。

按钮控件主要用来触发一个立即响应的动作,而不保留任何形式的开关指示。按钮控件有两种窗口样式,分别为BS_PUSHBUTTON和BS_DEFPUSHBUTTON。DEF代表默认。

当鼠标光标在按钮中时,按下鼠标,将使按钮用三维阴影重画自己,就像真的被按下一样。放开鼠标按钮,按钮就恢复了原貌,并且向父窗口发送了一个WM_COMMAND消息和BN_CLICKED通知码。与其他按钮形态类似,当按钮拥有输入焦点时,文字周围就有虚线。

可以通过给按钮窗口发送BM_SETSTATE消息来仿真按钮的按下动作。

SendMessage(hWndButton,BM_SETSTATE,1,0);
SendMessage(hWndButton,BM_SETSTATE,0,0);

也可以向按钮发送BM_GETSTATE消息,子窗口控件传回按钮当前的状态,按下还会TRUE,未被按下返回FALSE .

复选框

复选框是一个文字方块,文字通常出现在复选框的右边(除非建立按钮时指定了BS_LEFTTEXT样式,这样文字会出现在左边),复选框通常用于让使用者对选项进行选择的程序中.复选框的功能如同一个开关,单击一次将显示勾选标记,再次单击,则清除勾选标记。

复选框有两种样式,BS_CHECKBOX与BS_AUTOCHECKBOX,在使用BS_CHECKBOX时,需要自己向该控件发送BM_SETCHECK消息来设定勾选标记。wParam参数为1时设定为勾选,为0时清除勾选标记。通过向控件发送BM_GETCHECK消息,可以得到复选框的状态。

对于BS_AUTOCHECKBOX,按钮自己出发勾选标记,所以你可以忽略WM_COMMAND消息。当你需要知道目前复选框的状态时,可以发送BM_GETCHECK消息。

还有两种复选框样式,BS_3STATE和BS_AUTO3STATE,正如名字,这两种样式可以显示第三种状态-复选框内时灰色的。当向控件发出wParam为2的BM_SETCHECK消息,为此状态。

单选按钮

单选按钮常常用来表示相互排斥的选项。当第二次按单选按钮时,它的状态不会改变。

单选按钮是一个圆圈,除此之外,它与复选框非常像。圈内加重圆点表示该单选按钮已经被选中。单选按钮有两种样式BS_RADIObUTTON与BS_AUTORADIOBUTTON,后者只用于对话框。

分组方块

分组方块即样式为BS_GROUPBOX的选择框,它是按钮类中的特例,既不处理鼠标输入和键盘输入,也不向其父窗口发送WM_COMMAND消息。分组方块是一个矩形框,分组方块标题在其顶部显示。分组方块常用来包含其它的按钮控件。

改变按钮文字

可以通过Set WindowText来改变按钮的文字。

SetWindowText(hWnd,pszString);

也可以通过GetWindowText获取窗口目前的文字

可见的和启用的按钮

为了接收鼠标与键盘的输入,子窗口必须是可见与可用的。当窗口可见未被启用时,文字显示为灰色。

可以通过调用ShowWindow将子窗口隐藏

ShowWindow (hwndChild, SW_HIDE) ;

通过调用IsWindowVisible来确认子窗口是否可见。

可以通过调用EnalbeWindow使子窗口被启用或被禁用。通过IsWindowEnabled来确认子窗口是否被启用。

按钮和输入焦点

当Windows将输入焦点从一个窗口(例如一个父窗口)转换到另一个窗口(例如一个子窗口控件)时,它首先给正在失去输入焦点的窗口发送一个WM_KILLFOCUS消息,wParam参数是接收输入焦点的窗口的句柄。然后,Windows向正在接收输入焦点的窗口发送一个WM_SETFOCUS消息,同时wParam是还在失去输入焦点的窗口的句柄(在这两种情况中,wParam值可能为NULL,它表示没有窗口拥有或者正在接收输入焦点)。

通过处理WM_KILLFOCUS消息,父窗口可以阻止子窗口控件获得输入焦点。

发布了25 篇原创文章 · 获赞 8 · 访问量 408

猜你喜欢

转载自blog.csdn.net/cix1314/article/details/103866491