ButtonStyle GetIcon SetIcon GetBitmap SetBitmap GetCursor SetCursor GetButtonStyle SetButtonStyle
用途 检索按钮控件的选中状态、加亮状态和获得焦点状态 设置按钮控件的加亮状态 检索按钮控件的选中状态 设置按钮控件的选中状态 检索按钮控件的风格 设置按钮控件的风格 检索此前调用 SetIcon 设置的图标句柄 指定一个在按钮上显示的图标 检索此前调用 SetBitmap 设置的位图的句柄 设置在按钮上显示的位图 检索此前调用 SetCursor 设置的光标图像的句柄 设置在按钮上显示的光标图像 检索按钮控件的风格 设置按钮控件的风格
1、首先我们先看一下获取和设置按钮风格(style)的函数。
(1)CButton::GetButtonStyle UINT GetButtonStyle( ) const; 返回值:返回 CButton 对象的按钮风格。 说明:需注意的是,GetButtonStyle 函数只返回 BS_style 的值,而不返回任何其它窗口 风格的值。关于这一点可以查看 msdn,另外有一点对于初学者很容易出现误解,BS_FLAT、 BS_LEFT 等之类的风格不包含在内,可以返回的仅限于如下风格:BS_AUTOCHECKBOX、 BS_AUTORADIOBUTTON、 BS_AUTO3STATE、 BS_CHECKBOX、 BS_DEFPUSHBUTTON、 BS_GROUPBOX 、 BS_LEFTTEXT 、 BS_OWNERDRAW 、 BS_PUSHBUTTON 、 BS_RADIOBUTTON、BS_3STATE。 (2)CButton::SetButtonStyle void SetButtonStyle( UINT nStyle, BOOL bRedraw = TRUE ); 参数: nSt yle bRe 指明按钮是否需要重绘。非零值表示需要重绘,0 表示不需要重绘。缺省时需 draw 要重绘。 说明:本函数用于改变按钮的风格。同上,此函数只能改变上述风格。 (改变其他风格 可以使用 ModifyStyle 函数,具体方法下文示例详解) 。 下面我们在 Button 例子中实现如下功能,即通过点击第一个按钮(普通下压式按钮) , 动态改变第二个按钮为复选、框单选框和普通下压式按钮。 步骤如下: (1)首先注释掉原代码:MessageBox(_T("点击了普通按压式按钮!")); (2)调用 GetButtonStyle 获取按钮 2 的风格,并进行条件判断。 (3)调用 SetButtonStyle 改变按钮 2 的风格。 代码如下: void CButtonView::OnBtnClk() { //MessageBox(_T("点击了普通按压式按钮!")); UINT style=p_Btn->GetButtonStyle(); switch (style) { case BS_PUSHBUTTON: p_Btn->SetButtonStyle(BS_AUTO3STATE); break; case BS_AUTO3STATE: p_Btn->SetButtonStyle(BS_AUTORADIOBUTTON); break; case BS_AUTORADIOBUTTON: p_Btn->SetButtonStyle(BS_PUSHBUTTON); break; } } 如果我们想要为按钮设置其他风格怎么办呢?其实很简单,只需要改变一个函数,将 指定按钮的风格。
SetButtonStyle 函数改为 ModifyStyle,该函数说明如下: CWnd::ModifyStyle BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 ); 返回值:如果成功地修改了风格,则返回非零值;否则返回 0。 参数: dwRemove 指定了在修改风格时要清除的窗口风格。 dwAdd nFlags 指定了在修改风格时要加入的窗口风格。 要传递给 SetWindowPos 的标志,如果不应调用 SetWinowPos,则为 0。缺省值 为 0。预设的标志
列表参见说明部分。
说明: 调用这个成员函数以修改窗口的风格。要加入或清除的风格可以用位或操作符(|)来组合。 有关可用窗口风格的信息参见《Win32 SDK 程序员参考》中的“通用窗口风格”主题 和::CreateWindow。 如果 nFlags 为非零值, ModifyStyle 调用 Windows 的 API 函数::SetWindowPos, 则 并将 nFLags 与下面的四个预定义值组合,以重画窗口: SWP_NOSIZE SWP_NOMOVE SWP_NOZORDER 保持当前大小。 保持当前位置。 保持当
前的 Z 轴顺序。
SWP_NOACTIVATE 不激活窗口。要修改窗口的扩展风格,参见 ModifyStyleEx。 例如,我们可以为普通下压式按钮增加 BS_FLAT(2D 风格)属性,我们在 OnCreate 函数中完成这个任