首页 > 代码库 > MFC CButtonST 在你的程序中如何使用CButtonST类
MFC CButtonST 在你的程序中如何使用CButtonST类
http://www.vckbase.com/module/articleContent.php?id=1135
首先在你的工程中加入如下文件:
1 2 | BtnST.h BtnST.cpp |
从v3.5版本开始,CButtonST支持使用BCMenu类创建菜单。为了能够使用BCMenu,你必须在 BtnST.h中加入下面二行:
1 2 | #define BTNST_USE_BCMENU #include "BCMenu.h" |
当然,你也必须在你的工程文件中加入下面的头文件:
1 2 | BCMenu.h BCMenu.cpp |
注意:当 BCMenu 使参数可用时,与用SetNenu的方法是不同的! 从v3.6版本开始, CbuttonST可以在特殊的按钮播放声音。为了能够让它播放声音要在 BtnST.h 中加入:
1 | #define BTNST_USE_SOUND |
这样是为了使用SetSound 方法。用静态方法创建一个 CButtonST 用对话框编辑器中建一个标准的button,例如IDOK(你不需在自己动手创建),你可以用一个变量来创建这个button:
1 | CButtonST m_btnOk; |
现在你可以把这个 button 和 CbuttonST 连接在一起。在你的基于对话框的程序,在OnInitDialog:
1 2 3 4 5 6 7 8 9 10 11 | // Call the base-class method CDialog::OnInitDialog(); // Create the IDOK button m_btnOk.SubclassDlgItem(IDOK, this ); Or in your DoDataExchange: // Call the base method CDialog::DoDataExchange(pDX); // Create the IDOK button DDX_Control(pDX, IDOK, m_btnOk); |
用动态方法创建一个CButtonST 在人的程序中,为button创建一个变量。注意,这个变量的类型是指针:
1 | CButtonST* m_pbtnOk; |
现在创建button。在你的基于对话框的程序,在OnInitDialog:
1 2 3 4 5 6 7 8 9 10 | // Call the base-class method CDialog::OnInitDialog(); // Create the IDOK button m_pbtnOk = new CButtonST; m_pbtnOk->Create(_T( "&Ok" ), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, CRect(10, 10, 200, 100), this , IDOK); // Set the same font of the application m_pbtnOk->SetFont(GetFont()); |
记住销毁这个指针,否则将会导致内存泄漏.这个也可以容易的实现,例如,在你的类中销毁它:
1 | if (m_pbtnOk) delete m_pbtnOk; |
类的方法:
1 | SetIcon( using multi-size resources) |
给你的button指定图标。任何本来就有的图标或位图将会被删除。
参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // Parameters: // [IN] nIconIn // 图标资源的ID,当你的鼠标放在按钮上显示该图标.如果为空,则将删除任何图标。 // [IN] nCxDesiredIn // 指定加载图标的宽度,像素 // [IN] nCyDesiredIn // 指定加载图标的高度,像素 // [IN] nIconOut // 图标资源的ID,当你的鼠标在不在按钮内时,显示图标.可以为空. // 如果指定这个参数的值为 BTNST_AUTO_GRAY (cast to int)第二个图标将从 nIconIn 自动地创建, // 同时改变灰度级. // 如果指定这个参数的值为 BTNST_AUTO_DARKER (cast to int)第二个图标将从 nIconIn 自动地创建, // 灰度级为它的25%的. // [IN] nCxDesiredOut // 指定加载图标的宽度,像素 // [IN] nCyDesiredOut // 指定加载图标的高度,像素 // // 返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDRESOURCE // 加载指定资源失败 // DWORD SetIcon( int nIconIn, int nCxDesiredIn, int nCyDesiredIn, int nIconOut = NULL, int nCxDesiredOut = 0, int nCyDesiredOut = 0) SetIcon ( using resources) |
给你的button指定图标. 任何本来就有的图标或位图将会被删除.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Parameters: // [IN] nIconIn // 图标资源的ID,当你的鼠标放在按钮上显示该图标.如果为空,则将删除任何图标。 // [IN] nIconOut // 图标资源的ID,当你的鼠标在不在按钮内时,显示图标.可以为空. // 如果指定这个参数的值为 BTNST_AUTO_GRAY (cast to int)第二个图标将从 nIconIn 自动地创建, // 同时改变灰度级。如果指定这个参数的值为 BTNST_AUTO_DARKER (cast to int)第二个图标将从 // nIconIn 自动地创建,灰度级为它的25%的. //返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDRESOURCE // 加载指定资源失败 // DWORD SetIcon( int nIconIn, int nIconOut = NULL) SetIcon ( using handles) |
给你的button指定图标. 任何本来就有的图标或位图将会被删除.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Parameters: // [IN] hIconIn // 图标的句柄,鼠标放在按钮上显示该图标.如果为空,则将删除任何图标。. // [IN] hIconOut // 图标的句柄,当你的鼠标在不在按钮内时,显示图标.可以为空. // 如果指定这个参数的值为 BTNST_AUTO_GRAY (cast to int)第二个图标将从 nIconIn 自动地创建, // 同时改变灰度级。如果指定这个参数的值为 BTNST_AUTO_DARKER (cast to int)第二个图标将从 nIconIn 自动地创建,灰度级为它的25%的. //返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDRESOURCE // 加载指定资源失败 // DWORD SetIcon( HICON hIconIn, HICON hIconOut = NULL) SetBitmaps ( using resources) |
给你的button指定位图. 任何本来就有的图标或位图将会被删除.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // Parameters: // [IN] nBitmapIn // 位图资源的ID,当你的鼠标放在按钮上显示该位图.如果为空,则将删除任何位图. // [IN] crTransColorIn // 颜色(inside nBitmapIn)将被用于透明色. // [IN] nBitmapOut // 位图资源的ID,当你的鼠标在不在按钮内时,显示位图.可以为空 // [IN] crTransColorOut // 颜色(inside nBitmapOut)将被用于透明色. // 返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDRESOURCE // 加载指定资源失败 // BTNST_FAILEDMASK // 创建mask bitmap失败 // DWORD SetBitmaps( int nBitmapIn, COLORREF crTransColorIn, int nBitmapOut = NULL, COLORREF crTransColorOut = 0) SetBitmaps ( using handles) |
给你的button指定位图. 任何本来就有的图标或位图将会被删除.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // Parameters: // [IN] hBitmapIn // 位图资源的句柄,当你的鼠标放在按钮上显示该位图.如果为空,则将删除任何位图. // [IN] crTransColorIn // 颜色(inside nBitmapIn)将被用于透明色. // [IN] hBitmapOut // 位图资源的句柄,当你的鼠标在不在按钮内时,显示位图.可以为空 // [IN] crTransColorOut // 颜色(inside nBitmapOut)将被用于透明色. // // 返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDRESOURCE // 加载指定资源失败 // BTNST_FAILEDMASK // 创建mask bitmap失败 // DWORD SetBitmaps( HBITMAP hBitmapIn, COLORREF crTransColorIn, HBITMAP hBitmapOut = NULL, COLORREF crTransColorOut = 0) SetFlat |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 设置button为一个标准平滑的样式 // Parameters: // [IN] bFlat // 如果为TRUE按钮是平滑的样式否则为标准的样式.缺省为TRUE。 // [IN] bRepaint // 如果为TRUE 将被重置 //返回值: // BTNST_OK // 函数成功执行 // DWORD SetFlat( BOOL bFlat = TRUE, BOOL bRepaint = TRUE) SetAlign 设置icon/bitmap各text 之间的绑定方式. // Parameters: // [IN] byAlign // 绑定方式.可以是下面的值: // ST_ALIGN_HORIZ Icon/bitmap 在左, text 在右 // ST_ALIGN_VERT Icon/bitmap 在上, text 在下 // ST_ALIGN_HORIZ_RIGHT Icon/bitmap 在右, text 在左 // ST_ALIGN_OVERLAP Icon/bitmap 和 text 同一位置 // 缺省为 ST_ALIGN_HORIZ. // [IN] bRepaint // 如果为TRUE 将被重置 // // 返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDALIGN // 绑定失败. // DWORD SetAlign( BYTE byAlign, BOOL bRepaint = TRUE) SetTextAlign |
在text内设置不同的方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Parameters: // [IN] byTextAlign // 绑定方式.可以是下面的值: // ST_TEXTALIGN_CENTER_VCENTER 水平,垂直,中心 // ST_TEXTALIGN_LEFT_VCENTER 靠左,垂直,中心 // 缺省为ST_TEXTALIGN_CENTER_VCENTER // ST_TEXTALIGN_RIGHT_VCENTER 靠右,垂直,中心 // 但在checkboxes 或 radiobuttons 中缺省为ST_TEXTALIGN_LEFT_VCENTER. // [IN] bRepaint // 如果为TRUE 将被重置 // // 返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDALIGN // 绑定失败. // DWORD SetTextAlign( BYTE byTextAlign, BOOL bRepaint = TRUE) SetPressedStyle |
设置下压方式.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Parameters: // [IN] byStyle // 下压方式,可以是下面的值: // BTNST_PRESSED_LEFTRIGHT 从左到右 BTNST_PRESSED_TOPBOTTOM 从上到下 // 缺省为 BTNST_PRESSED_LEFTRIGHT. // [IN] bRepaint // 如果为TRUE 将被重置 // //返回值: // BTNST_OK // 函数成功执行 // BTNST_INVALIDPRESSEDSTYLE // 下压方式不支持. // DWORD SetPressedStyle( BYTE byStyle, BOOL bRepaint = TRUE) SetCheck |
设置checkbox状态.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | button 必须是一个 checkbox. // Parameters: // [IN] nCheck // 1 表示选中. // 0 表示没有选中 // [IN] bRepaint // 如果为TRUE 将被重置 // // 返回值: // BTNST_OK // 函数成功执行. // DWORD SetCheck( int nCheck, BOOL bRepaint = TRUE) GetCheck |
返回当前checkbox状态. button 必须是一个 checkbox.
1 2 3 4 5 6 7 8 9 | //返回值: // 当前checkbox状态. // 1 被选中 // 0 没有被选中或button不是一个checkbox. // int GetCheck() SetDefaultColors |
设置缺省颜色值
1 2 3 4 5 6 7 8 9 10 11 12 | // Parameters: // [IN] bRepaint // 如果为TRUE 将被重置 // //返回值: // BTNST_OK // 函数成功执行 // DWORD SetDefaultColors( BOOL bRepaint = TRUE) SetColor |
设置特殊状态下的颜色值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // Parameters: // [IN] byColorIndex // 要设置的颜色值的索引,可以是下面的值: // BTNST_COLOR_BK_IN 鼠标滑过时背景色 // BTNST_COLOR_FG_IN 鼠标滑过时文本色 // BTNST_COLOR_BK_OUT 鼠标不在按钮内的背景色 // BTNST_COLOR_FG_OUT 鼠标不在按钮内的背景色 // BTNST_COLOR_BK_FOCUS 焦点在按钮上,背景色 // BTNST_COLOR_FG_FOCUS 焦点在按钮上,文本色 // [IN] crColor // 新颜色 // [IN] bRepaint // 如果为TRUE 将被重置 // //返回值: // BTNST_OK // 函数成功执行. // BTNST_INVALIDINDEX // 错误的植. // DWORD SetColor( BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE) GetColor |
返回特殊状态下的颜色值.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Parameters: // [IN] byColorIndex // 颜色值索引 // [OUT] crpColor // 指向想要查询的COLORREF. // //返回值: // BTNST_OK // 函数成功执行. // BTNST_INVALIDINDEX // 错误的植. // DWORD GetColor( BYTE byColorIndex, COLORREF * crpColor) OffsetColor |
该函数用于设置RGB值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Parameters: // [IN] byColorIndex // 设置的颜色值的索引. // 看SetColor函数中颜色列表. // [IN] shOffsetColor // -255到255之间 // [IN] bRepaint // 如果为TRUE 将被重置 // // 返回值: // BTNST_OK // 函数成功执行. // BTNST_INVALIDINDEX // 错误的植. // BTNST_BADPARAM // 超出范围 // DWORD OffsetColor( BYTE byColorIndex, short shOffset, BOOL bRepaint = TRUE) |
MFC CButtonST 在你的程序中如何使用CButtonST类