首先在你的工程中加入如下文件:
BtnST.h BtnST.cpp
從v3.5版本開始,CButtonST支持使用BCMenu類創建菜單。為了能夠使用BCMenu,你必須在 BtnST.h中加入下面二行:
#define BTNST_USE_BCMENU #include "BCMenu.h"
當然,你也必須在你的工程文件中加入下面的頭文件:
BCMenu.h BCMenu.cpp
注意:當 BCMenu 使參數可用時,與用SetNenu的方法是不同的! 從v3.6版本開始, CbuttonST可以在特殊的按鈕播放聲音。為了能夠讓它播放聲音要在 BtnST.h 中加入:
#define BTNST_USE_SOUND
這樣是為了使用SetSound 方法。用靜態方法創建一個 CButtonST 用對話框編輯器中建一個標准的button,例如IDOK(你不需在自己動手創建),你可以用一個變量來創建這個button:
CButtonST m_btnOk;
現在你可以把這個 button 和 CbuttonST 連接在一起。在你的基於對話框的程序,在OnInitDialog:
// 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創建一個變量。注意,這個變量的類型是指針:
CButtonST* m_pbtnOk;現在創建button。在你的基於對話框的程序,在OnInitDialog:
// 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());記住銷毀這個指針,否則將會導致內存洩漏.這個也可以容易的實現,例如,在你的類中銷毀它:
if (m_pbtnOk) delete m_pbtnOk;
類的方法:
SetIcon(using multi-size resources)
給你的button指定圖標。任何本來就有的圖標或位圖將會被刪除。
參數:
// 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指定圖標. 任何本來就有的圖標或位圖將會被刪除.
// 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指定圖標. 任何本來就有的圖標或位圖將會被刪除.
// 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指定位圖. 任何本來就有的圖標或位圖將會被刪除.
// 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指定位圖. 任何本來就有的圖標或位圖將會被刪除.
// 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 設置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內設置不同的方式
// 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設置下壓方式.
// 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狀態.
button 必須是一個 checkbox. // Parameters: // [IN] nCheck // 1 表示選中. // 0 表示沒有選中 // [IN] bRepaint // 如果為TRUE 將被重置 // // 返回值: // BTNST_OK // 函數成功執行. // DWORD SetCheck(int nCheck, BOOL bRepaint = TRUE) GetCheck返回當前checkbox狀態. button 必須是一個 checkbox.
//返回值: // 當前checkbox狀態. // 1 被選中 // 0 沒有被選中或button不是一個checkbox. // int GetCheck() SetDefaultColors設置缺省顏色值
// Parameters: // [IN] bRepaint // 如果為TRUE 將被重置 // //返回值: // BTNST_OK // 函數成功執行 // DWORD SetDefaultColors(BOOL bRepaint = TRUE) SetColor設置特殊狀態下的顏色值
// 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返回特殊狀態下的顏色值.
// Parameters: // [IN] byColorIndex // 顏色值索引 // [OUT] crpColor // 指向想要查詢的COLORREF. // //返回值: // BTNST_OK // 函數成功執行. // BTNST_INVALIDINDEX // 錯誤的植. // DWORD GetColor(BYTE byColorIndex, COLORREF* crpColor) OffsetColor該函數用於設置RGB值。
// 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)
本文示例代碼或素材下載