CButtonST 是功能最全面的 CButton 衍生類,支援圖示、位圖、扁平/立體風格、工具提示、超連結、選單彈出、聲音、XP 圓角、金屬質感等。本文整理其核心用法與公共介面,助您快速上手。
BtnST.h/.cpp。BtnST.h 定義 BTNST_USE_BCMENU 並加入 BCMenu.h/.cpp。BTNST_USE_SOUND。StdAfx.h 統一 #include "BtnST.h"。// 對話框類別成員
CButtonST m_btnOk;
// OnInitDialog
m_btnOk.SubclassDlgItem(IDOK, this);
// 或 DDX
DDX_Control(pDX, IDOK, m_btnOk);
CButtonST* m_pbtnOk;
m_pbtnOk = new CButtonST;
m_pbtnOk->Create(_T("&Ok"), WS_CHILD|WS_VISIBLE|WS_GROUP|WS_TABSTOP,
CRect(10,10,200,100), this, IDOK);
m_pbtnOk->SetFont(GetFont());
// 記得在解構函式 delete m_pbtnOk 避免記憶體洩漏
| 函數 | 用途 | 關鍵參數 |
|---|---|---|
SetIcon | 設定圖示(支援資源 ID/句柄、滑入/滑出雙狀態、自動灰階/深色) | nIconIn, nIconOut, 尺寸 |
SetBitmaps | 設定位圖(指定透明色) | nBitmapIn, crTransColorIn, nBitmapOut, crTransColorOut |
SetFlat | 扁平/立體風格切換 | bFlat=TRUE, bRepaint=TRUE |
SetAlign | 圖示/文字相對位置 | ST_ALIGN_HORIZ/VERT/HORIZ_RIGHT/OVERLAP |
SetTextAlign | 文字區域對齊 | ST_TEXTALIGN_CENTER_VCENTER/LEFT_VCENTER/RIGHT_VCENTER |
SetPressedStyle | 按下動畫方向 | BTNST_PRESSED_LEFTRIGHT/TOPBOTTOM |
SetCheck / GetCheck | CheckBox 狀態 | nCheck=1/0 |
SetColor / OffsetColor | 各狀態顏色(背景/前景) | BTNST_COLOR_BK_IN/FG_IN/BK_OUT/... |
SetDefaultColors | 恢復系統預設色 | bRepaint |
DrawBorder / DrawFlatFocus / DrawTransparent | 邊框、扁平焦點框、透明模式 | bDraw/bRepaint |
SetBtnCursor | 滑入時游標形狀 | nCursorId |
SetTooltipText | 工具提示(支援多行) | nText/LPCTSTR, bActivate |
SetURL | 點擊開啟網址(超連結效果) | LPCTSTR |
SetMenu | 關聯彈出選單(需 BCMenu,支援 XP 風格與工具列圖示) | nMenu, hParentWnd, bWinXPStyle, nToolbarID... |
SetSound / PlaySound | 滑入播放聲音(需 BTNST_USE_SOUND) | 資源 ID 或預設提示音 |
SetIcon(IDI_ICON1); SetFlat(FALSE);SetIcon(IDI_ICON1); // 預設 Flat=TRUESetIcon(IDI_ICON2, IDI_ICON1);SetColor(BTNST_COLOR_BK_OUT, RGB(208,208,208)); OffsetColor(BTNST_COLOR_BK_IN, 30);SetAlign(ST_ALIGN_VERT);DrawBorder(FALSE); SetColor(..., 背景色);SetTooltipText(_T("提示文字\r\n換行"));SetURL(_T("www.example.com")); SetBtnCursor(IDC_CURSOR1);SetMenu(IDR_MENU, m_hWnd, TRUE, IDR_TOOLBAR);SetBitmaps(IDB_BITMAP1, RGB(0,0,0)); OffsetColor(BTNST_COLOR_BK_IN, 30);SubclassDlgItem(IDC_CHECK1); SetIcon(IDI_CHECK_ON, IDI_CHECK_OFF);DrawTransparent(TRUE);SetRounded(TRUE) 啟用。注意:圓角僅繪製,點擊區域仍為矩形,有背景色時需同步 SetColor 避免殘角。SetShade(SHS_METAL) 等。CButtonST 以極簡介面封裝豐富視覺效果,是 VC 介面美化的利器。本文僅列核心用法,完整參數請參閱原始碼註解與官方文檔。