首先在你的工程中加入如下文件:
1.
BtnST.h
2.
BtnST.cpp
從v3.5版本開始,CButtonST支持使用BCMenu類創建菜單。爲了能夠使用BCMenu,你必須在 BtnST.h中加入下面二行:
1.
#define BTNST_USE_BCMENU
2.
#include "BCMenu.h"
當然,你也必須在你的工程文件中加入下面的頭文件:
1.
BCMenu.h
2.
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:
01.
// Call the base-class method
02.
CDialog::OnInitDialog();
03.
04.
// Create the IDOK button
05.
m_btnOk.SubclassDlgItem(IDOK,
this
);
06.
Or in your DoDataExchange:
07.
// Call the base method
08.
CDialog::DoDataExchange(pDX);
09.
10.
// Create the IDOK button
11.
DDX_Control(pDX, IDOK, m_btnOk);
用動態方法創建一個CButtonST 在人的程序中,爲button創建一個變量。注意,這個變量的類型是指針:
1.
CButtonST* m_pbtnOk;
現在創建button。在你的基於對話框的程序,在OnInitDialog:
01.
// Call the base-class method
02.
CDialog::OnInitDialog();
03.
04.
// Create the IDOK button
05.
m_pbtnOk =
new
CButtonST;
06.
m_pbtnOk->Create(_T(
"&Ok"
),
07.
WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP,
08.
CRect(10, 10, 200, 100),
this
, IDOK);
09.
// Set the same font of the application
10.
m_pbtnOk->SetFont(GetFont());
記住銷燬這個指針,否則將會導致內存泄漏.這個也可以容易的實現,例如,在你的類中銷燬它:
1.
if
(m_pbtnOk)
delete
m_pbtnOk;
類的方法:
1.
SetIcon(
using
multi-size resources)
給你的button指定圖標。任何本來就有的圖標或位圖將會被刪除。
參數:
01.
// Parameters:
02.
// [IN] nIconIn
03.
// 圖標資源的ID,當你的鼠標放在按鈕上顯示該圖標.如果爲空,則將刪除任何圖標。
04.
// [IN] nCxDesiredIn
05.
// 指定加載圖標的寬度,像素
06.
// [IN] nCyDesiredIn
07.
// 指定加載圖標的高度,像素
08.
// [IN] nIconOut
09.
// 圖標資源的ID,當你的鼠標在不在按鈕內時,顯示圖標.可以爲空.
10.
// 如果指定這個參數的值爲 BTNST_AUTO_GRAY (cast to int)第二個圖標將從 nIconIn 自動地創建,
11.
// 同時改變灰度級.
12.
// 如果指定這個參數的值爲 BTNST_AUTO_DARKER (cast to int)第二個圖標將從 nIconIn 自動地創建,
13.
// 灰度級爲它的25%的.
14.
// [IN] nCxDesiredOut
15.
// 指定加載圖標的寬度,像素
16.
// [IN] nCyDesiredOut
17.
// 指定加載圖標的高度,像素
18.
//
19.
// 返回值:
20.
// BTNST_OK
21.
// 函數成功執行
22.
// BTNST_INVALIDRESOURCE
23.
// 加載指定資源失敗
24.
//
25.
DWORD
SetIcon(
int
nIconIn,
int
nCxDesiredIn,
int
nCyDesiredIn,
26.
int
nIconOut = NULL,
int
nCxDesiredOut = 0,
int
nCyDesiredOut = 0)
27.
28.
29.
SetIcon (
using
resources)
給你的button指定圖標. 任何本來就有的圖標或位圖將會被刪除.
01.
// Parameters:
02.
// [IN] nIconIn
03.
// 圖標資源的ID,當你的鼠標放在按鈕上顯示該圖標.如果爲空,則將刪除任何圖標。
04.
// [IN] nIconOut
05.
// 圖標資源的ID,當你的鼠標在不在按鈕內時,顯示圖標.可以爲空.
06.
// 如果指定這個參數的值爲 BTNST_AUTO_GRAY (cast to int)第二個圖標將從 nIconIn 自動地創建,
07.
// 同時改變灰度級。如果指定這個參數的值爲 BTNST_AUTO_DARKER (cast to int)第二個圖標將從
08.
// nIconIn 自動地創建,灰度級爲它的25%的.
09.
//返回值:
10.
// BTNST_OK
11.
// 函數成功執行
12.
// BTNST_INVALIDRESOURCE
13.
// 加載指定資源失敗
14.
//
15.
DWORD
SetIcon(
int
nIconIn,
int
nIconOut = NULL)
16.
17.
18.
SetIcon (
using
handles)
給你的button指定圖標. 任何本來就有的圖標或位圖將會被刪除.
01.
// Parameters:
02.
// [IN] hIconIn
03.
// 圖標的句柄,鼠標放在按鈕上顯示該圖標.如果爲空,則將刪除任何圖標。.
04.
// [IN] hIconOut
05.
// 圖標的句柄,當你的鼠標在不在按鈕內時,顯示圖標.可以爲空.
06.
// 如果指定這個參數的值爲 BTNST_AUTO_GRAY (cast to int)第二個圖標將從 nIconIn 自動地創建,
07.
// 同時改變灰度級。如果指定這個參數的值爲 BTNST_AUTO_DARKER (cast to int)第二個圖標將從
08.
nIconIn 自動地創建,灰度級爲它的25%的.
09.
//返回值:
10.
// BTNST_OK
11.
// 函數成功執行
12.
// BTNST_INVALIDRESOURCE
13.
// 加載指定資源失敗
14.
//
15.
DWORD
SetIcon(
HICON
hIconIn,
HICON
hIconOut = NULL)
16.
17.
18.
SetBitmaps (
using
resources)
給你的button指定位圖. 任何本來就有的圖標或位圖將會被刪除.
01.
// Parameters:
02.
// [IN] nBitmapIn
03.
// 位圖資源的ID,當你的鼠標放在按鈕上顯示該位圖.如果爲空,則將刪除任何位圖.
04.
// [IN] crTransColorIn
05.
// 顏色(inside nBitmapIn)將被用於透明色.
06.
// [IN] nBitmapOut
07.
// 位圖資源的ID,當你的鼠標在不在按鈕內時,顯示位圖.可以爲空
08.
// [IN] crTransColorOut
09.
// 顏色(inside nBitmapOut)將被用於透明色.
10.
11.
// 返回值:
12.
// BTNST_OK
13.
// 函數成功執行
14.
// BTNST_INVALIDRESOURCE
15.
// 加載指定資源失敗
16.
// BTNST_FAILEDMASK
17.
// 創建mask bitmap失敗
18.
//
19.
DWORD
SetBitmaps(
int
nBitmapIn,
20.
COLORREF
crTransColorIn,
21.
int
nBitmapOut = NULL,
22.
COLORREF
crTransColorOut = 0)
23.
24.
SetBitmaps (
using
handles)
給你的button指定位圖. 任何本來就有的圖標或位圖將會被刪除.
01.
// Parameters:
02.
// [IN] hBitmapIn
03.
// 位圖資源的句柄,當你的鼠標放在按鈕上顯示該位圖.如果爲空,則將刪除任何位圖.
04.
// [IN] crTransColorIn
05.
// 顏色(inside nBitmapIn)將被用於透明色.
06.
// [IN] hBitmapOut
07.
// 位圖資源的句柄,當你的鼠標在不在按鈕內時,顯示位圖.可以爲空
08.
// [IN] crTransColorOut
09.
// 顏色(inside nBitmapOut)將被用於透明色.
10.
//
11.
// 返回值:
12.
// BTNST_OK
13.
// 函數成功執行
14.
// BTNST_INVALIDRESOURCE
15.
// 加載指定資源失敗
16.
// BTNST_FAILEDMASK
17.
// 創建mask bitmap失敗
18.
//
19.
DWORD
SetBitmaps(
HBITMAP
hBitmapIn,
20.
COLORREF
crTransColorIn,
21.
HBITMAP
hBitmapOut = NULL,
22.
COLORREF
crTransColorOut = 0)
23.
24.
25.
SetFlat
01.
設置button爲一個標準平滑的樣式
// Parameters:
02.
// [IN] bFlat
03.
// 如果爲TRUE按鈕是平滑的樣式否則爲標準的樣式.缺省爲TRUE。
04.
// [IN] bRepaint
05.
// 如果爲TRUE 將被重置
06.
//返回值:
07.
// BTNST_OK
08.
// 函數成功執行
09.
//
10.
DWORD
SetFlat(
BOOL
bFlat = TRUE,
BOOL
bRepaint = TRUE)
11.
12.
13.
SetAlign
14.
設置icon/bitmap各text 之間的綁定方式.
15.
// Parameters:
16.
// [IN] byAlign
17.
// 綁定方式.可以是下面的值:
18.
// ST_ALIGN_HORIZ Icon/bitmap 在左, text 在右
19.
// ST_ALIGN_VERT Icon/bitmap 在上, text 在下
20.
// ST_ALIGN_HORIZ_RIGHT Icon/bitmap 在右, text 在左
21.
// ST_ALIGN_OVERLAP Icon/bitmap 和 text 同一位置
22.
// 缺省爲 ST_ALIGN_HORIZ.
23.
// [IN] bRepaint
24.
// 如果爲TRUE 將被重置
25.
//
26.
// 返回值:
27.
// BTNST_OK
28.
// 函數成功執行
29.
// BTNST_INVALIDALIGN
30.
// 綁定失敗.
31.
//
32.
DWORD
SetAlign(
BYTE
byAlign,
BOOL
bRepaint = TRUE)
33.
34.
35.
SetTextAlign
在text內設置不同的方式
01.
// Parameters:
02.
// [IN] byTextAlign
03.
// 綁定方式.可以是下面的值:
04.
// ST_TEXTALIGN_CENTER_VCENTER 水平,垂直,中心
05.
// ST_TEXTALIGN_LEFT_VCENTER 靠左,垂直,中心
06.
07.
// 缺省爲ST_TEXTALIGN_CENTER_VCENTER
08.
// ST_TEXTALIGN_RIGHT_VCENTER 靠右,垂直,中心
09.
// 但在checkboxes 或 radiobuttons 中缺省爲ST_TEXTALIGN_LEFT_VCENTER.
10.
// [IN] bRepaint
11.
// 如果爲TRUE 將被重置
12.
//
13.
// 返回值:
14.
// BTNST_OK
15.
// 函數成功執行
16.
// BTNST_INVALIDALIGN
17.
// 綁定失敗.
18.
//
19.
DWORD
SetTextAlign(
BYTE
byTextAlign,
BOOL
bRepaint = TRUE)
20.
21.
22.
SetPressedStyle
設置下壓方式.
01.
// Parameters:
02.
// [IN] byStyle
03.
// 下壓方式,可以是下面的值:
04.
// BTNST_PRESSED_LEFTRIGHT 從左到右 BTNST_PRESSED_TOPBOTTOM 從上到下
05.
// 缺省爲 BTNST_PRESSED_LEFTRIGHT.
06.
// [IN] bRepaint
07.
// 如果爲TRUE 將被重置
08.
//
09.
//返回值:
10.
// BTNST_OK
11.
// 函數成功執行
12.
// BTNST_INVALIDPRESSEDSTYLE
13.
// 下壓方式不支持.
14.
//
15.
DWORD
SetPressedStyle(
BYTE
byStyle,
BOOL
bRepaint = TRUE)
16.
17.
18.
SetCheck
設置checkbox狀態.
01.
button 必須是一個 checkbox.
02.
// Parameters:
03.
// [IN] nCheck
04.
// 1 表示選中.
05.
// 0 表示沒有選中
06.
// [IN] bRepaint
07.
// 如果爲TRUE 將被重置
08.
//
09.
// 返回值:
10.
// BTNST_OK
11.
// 函數成功執行.
12.
//
13.
DWORD
SetCheck(
int
nCheck,
BOOL
bRepaint = TRUE)
14.
15.
16.
GetCheck
返回當前checkbox狀態. button 必須是一個 checkbox.
01.
//返回值:
02.
// 當前checkbox狀態.
03.
// 1 被選中
04.
// 0 沒有被選中或button不是一個checkbox.
05.
//
06.
int
GetCheck()
07.
08.
09.
SetDefaultColors
設置缺省顏色值
01.
// Parameters:
02.
// [IN] bRepaint
03.
// 如果爲TRUE 將被重置
04.
//
05.
//返回值:
06.
// BTNST_OK
07.
// 函數成功執行
08.
//
09.
DWORD
SetDefaultColors(
BOOL
bRepaint = TRUE)
10.
11.
12.
SetColor
設置特殊狀態下的顏色值
01.
// Parameters:
02.
// [IN] byColorIndex
03.
// 要設置的顏色值的索引,可以是下面的值:
04.
// BTNST_COLOR_BK_IN 鼠標滑過時背景色
05.
// BTNST_COLOR_FG_IN 鼠標滑過時文本色
06.
// BTNST_COLOR_BK_OUT 鼠標不在按鈕內的背景色
07.
// BTNST_COLOR_FG_OUT 鼠標不在按鈕內的背景色
08.
// BTNST_COLOR_BK_FOCUS 焦點在按鈕上,背景色
09.
// BTNST_COLOR_FG_FOCUS 焦點在按鈕上,文本色
10.
// [IN] crColor
11.
// 新顏色
12.
// [IN] bRepaint
13.
// 如果爲TRUE 將被重置
14.
//
15.
//返回值:
16.
// BTNST_OK
17.
// 函數成功執行.
18.
// BTNST_INVALIDINDEX
19.
// 錯誤的植.
20.
//
21.
DWORD
SetColor(
BYTE
byColorIndex,
COLORREF
crColor,
BOOL
bRepaint = TRUE)
22.
23.
24.
GetColor
返回特殊狀態下的顏色值.
01.
// Parameters:
02.
// [IN] byColorIndex
03.
// 顏色值索引
04.
// [OUT] crpColor
05.
// 指向想要查詢的COLORREF.
06.
//
07.
//返回值:
08.
// BTNST_OK
09.
// 函數成功執行.
10.
// BTNST_INVALIDINDEX
11.
// 錯誤的植.
12.
//
13.
DWORD
GetColor(
BYTE
byColorIndex,
COLORREF
* crpColor)
14.
15.
16.
OffsetColor
該函數用於設置RGB值。
01.
// Parameters:
02.
// [IN] byColorIndex
03.
// 設置的顏色值的索引.
04.
// 看SetColor函數中顏色列表.
05.
// [IN] shOffsetColor
06.
// -255到255之間
07.
// [IN] bRepaint
08.
// 如果爲TRUE 將被重置
09.
//
10.
// 返回值:
11.
// BTNST_OK
12.
// 函數成功執行.
13.
// BTNST_INVALIDINDEX
14.
// 錯誤的植.
15.
// BTNST_BADPARAM
16.
// 超出範圍
17.
//
18.
DWORD
OffsetColor(
BYTE
byColorIndex,
short
shOffset,
BOOL
bRepaint