首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

CButtonST 完整使用指南:從基礎到進階功能

     編輯:關於VC++

前言

CButtonST 是功能最全面的 CButton 衍生類,支援圖示、位圖、扁平/立體風格、工具提示、超連結、選單彈出、聲音、XP 圓角、金屬質感等。本文整理其核心用法與公共介面,助您快速上手。

專案整合

  1. 加入 BtnST.h/.cpp。
  2. 需 BCMenu 功能時,在 BtnST.h 定義 BTNST_USE_BCMENU 並加入 BCMenu.h/.cpp。
  3. 需聲音功能時,定義 BTNST_USE_SOUND。
  4. 建議在 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 / GetCheckCheckBox 狀態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=TRUE
  • 滑入切換圖示:SetIcon(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);
  • CheckBox:SubclassDlgItem(IDC_CHECK1); SetIcon(IDI_CHECK_ON, IDI_CHECK_OFF);
  • 透明按鈕:DrawTransparent(TRUE);

衍生類擴充

  • CWinXPButtonST:XP 圓角黑框風格,SetRounded(TRUE) 啟用。注意:圓角僅繪製,點擊區域仍為矩形,有背景色時需同步 SetColor 避免殘角。
  • CShadeButtonST:9 種金屬/漸層背景,SetShade(SHS_METAL) 等。

結語

CButtonST 以極簡介面封裝豐富視覺效果,是 VC 介面美化的利器。本文僅列核心用法,完整參數請參閱原始碼註解與官方文檔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved