http://www.vckbase.com/module/articleContent.php?id=1135
首先在你的工程中加入如下文件:
从v3.5版本开始,CButtonST支持使用BCMenu类创建菜单。为了能够使用BCMenu,你必须在 BtnST.h中加入下面二行:
1
2
|
#define BTNST_USE_BCMENU
#include "BCMenu.h"
|
当然,你也必须在你的工程文件中加入下面的头文件:
注意:当 BCMenu 使参数可用时,与用SetNenu的方法是不同的! 从v3.6版本开始, CbuttonST可以在特殊的按钮播放声音。为了能够让它播放声音要在 BtnST.h 中加入:
1
|
#define BTNST_USE_SOUND
|
这样是为了使用SetSound 方法。用静态方法创建一个 CButtonST 用对话框编辑器中建一个标准的button,例如IDOK(你不需在自己动手创建),你可以用一个变量来创建这个button:
现在你可以把这个 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创建一个变量。注意,这个变量的类型是指针:
现在创建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)
|
时间: 2024-10-03 13:46:48