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

CButtonST 使用完全指南:從基礎圖示到進階扁平/聲音/對齊/顏色客製化

     編輯:VC 教學

CButtonST (作者 Davide Calabro) 是公認最強大、功能最全的 CButton 派生類,支援圖示+文字、扁平/立體風格、滑鼠進入熱態圖示切換、多狀態顏色控制、圖示文字對齊、不規則形狀、甚至滑鼠經過播放聲音。本文整理其核心功能與使用範例,作為快速查閱手冊。

環境準備

  • 引入 4 個檔案:BtnST.h, BtnST.cpp, BCMenu.h, BCMenu.cpp (v3.5+ 支援選單)。
  • StdAfx.h 加入 #include "BtnST.h"。
  • 對話框類別宣告成員:CButtonST m_btn;

六大經典效果速成

效果核心代碼 (於 OnInitDialog)關鍵點
1. 圖示+文字同時顯示
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetFlat(FALSE); // 立體風格
按鈕尺寸需配合圖示大小調整
2. 扁平風格按鈕
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
m_btn.SetIcon(IDI_ICON1);
// 不呼叫 SetFlat(FALSE) 即為預設扁平
扁平為預設風格,視覺更現代
3. 滑鼠進入切換圖示 (熱態)
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
m_btn.SetIcon(IDI_ICON_HOT, IDI_ICON_NORMAL); // 參數:進入時、離開時
IDI_ICON_HOT 為滑鼠懸停顯示圖示
4. 多狀態自訂顏色
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetColor(CButtonST::BTNST_COLOR_BK_OUT, RGB(208,208,208)); // 一般背景
m_btn.SetColor(CButtonST::BTNST_COLOR_BK_IN, RGB(208,208,208));  // 滑鼠進入背景
m_btn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30); // 按下時亮度偏移
顏色索引:
BK_IN/FG_IN (進入)
BK_OUT/FG_OUT (一般)
BK_FOCUS/FG_FOCUS (按下/焦點)
5. 圖示文字位置對齊
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetAlign(CButtonST::ST_ALIGN_VERT); // 圖示上、文字下
對齊模式:
ST_ALIGN_HORIZ (圖左文右)
ST_ALIGN_VERT (圖上文下)
ST_ALIGN_HORIZ_RIGHT (圖右文左)
ST_ALIGN_OVERLAP (重疊)
6. 依圖示形狀裁剪按鈕 (不規則按鈕)
m_btn.SubclassDlgItem(IDC_BUTTON1, this);
m_btn.SetIcon(IDI_ICON1);
m_btn.DrawBorder(FALSE); // 隱藏邊框
m_btn.SetColor(BTNST_COLOR_BK_OUT, RGB(208,208,208));
m_btn.SetColor(BTNST_COLOR_BK_IN, RGB(208,208,208));
m_btn.SetColor(BTNST_COLOR_BK_FOCUS, RGB(208,208,208));
// 重要:按鈕屬性移除文字,尺寸配合圖示
背景色需與父視窗一致,視覺上呈現圖示形狀

進階功能速查表

  • SetBitmaps / SetBitmaps:使用位圖資源代替圖示,支援透明色指定。
  • SetFlat(BOOL bFlat, BOOL bRepaint):動態切換扁平/立體風格。
  • SetTextAlign / SetPressedStyle / SetCheck / GetCheck:文字對齊、按下動畫風格、核取方塊狀態。
  • SetDefaultColors / SetColor / GetColor / OffsetColor:完整色彩體系控制。
  • 選單支援 (v3.5+): 定義 BTNST_USE_BCMENU 並包含 BCMenu.h,可為按鈕附加下拉選單。
  • 聲音支援 (v3.6+): 定義 BTNST_USE_SOUND,使用 SetSound 設定滑鼠經過播放 WAV 資源。

動態建立模式

// 指標成員
CButtonST* m_pBtn = new CButtonST;
m_pBtn->Create(_T("確定"), WS_CHILD|WS_VISIBLE|WS_TABSTOP, CRect(10,10,100,40), this, IDOK);
m_pBtn->SetFont(GetFont());
// 記得在視窗銷毀時 delete m_pBtn 避免記憶體洩漏

授權提醒

作者 Davide Calabro (davide_calabro@yahoo.com, https://www.softechsoftware.it) 註明:非商業用途免費,商業用途需支付 $5 授權費。專案若用於商業產品,請務必聯繫作者購買授權。

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