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

CButtonST 完整使用指南:最強大的 MFC 按鈕類別庫詳解

     編輯:關於VC++

CButtonST(作者 Davide Calabro)被公認為功能最完整的 CButton 衍生類別,支援圖示、位圖、選單、工具提示、超連結、透明背景、CheckBox 模式等豐富功能。本文整理其核心功能與實際套用範例,作為快速查閱手冊。

基本架構與檔案結構

  • 核心檔案:BtnST.h、BtnST.cpp、BCMenu.h、BCMenu.cpp
  • 建議加入專案後,在 StdAfx.h 統一引入:#include "BtnST.h"

七大基礎效果快速實現

效果關鍵程式碼說明
圖示+文字同時顯示m_btn.SetIcon(IDI_ICON1);
m_btn.SetFlat(FALSE);
依圖示大小調整按鈕尺寸
平面按鈕移除 SetFlat(FALSE)預設即為平面風格
狀態切換圖示m_btn.SetIcon(IDI_ICON2, IDI_ICON1);第一參數為按下狀態,第二為一般狀態
自訂顏色m_btn.SetColor(BTNST_COLOR_BK_OUT, RGB(208,208,208));
m_btn.OffsetColor(BTNST_COLOR_BK_IN, 30);
支援六種狀態顏色,OffsetColor 依基底色偏移產生自然變化
圖示文字位置m_btn.SetAlign(CButtonST::ST_ALIGN_VERT);支援水平、垂直、右側對齊
依圖示形狀裁剪m_btn.DrawBorder(FALSE);
m_btn.SetColor(..., RGB(208,208,208));
移除邊框並統一背景色,配合透明圖示效果最佳
工具提示m_btn.SetTooltipText(_T("提示文字\r\n多行支援"));支援多行與資源 ID 兩種方式

七大進階效果

效果關鍵設定
超連結按鈕m_btn.SetURL("www.example.com");
m_btn.SetBtnCursor(IDC_CURSOR1);
下拉選單按鈕m_btn.SetMenu(IDR_MENU, m_hWnd); 需搭配工具列資源實現選單圖示
位圖按鈕m_btn.SetBitmaps(IDB_BITMAP1, RGB(0,0,0)); 指定透明色
焦點框樣式m_btn.DrawFlatFocus(TRUE); 平面按鈕專用
CheckBox 模式m_btn.SetIcon(IDI_CHECK_ON, IDI_CHECK_OFF); 針對 CheckBox 控制項
透明按鈕m_btn.DrawTransparent(TRUE); 內存保留背景拷貝,慎用
PictureBox 替代品設為 Disable 狀態,純顯示圖片用途

兩大衍生類別擴充功能

CWinXPButtonST - XP 圓角風格

#include "WinXPButtonST.h"
CWinXPButtonST m_btn2;
m_btn2.SubclassDlgItem(IDC_BUTTON, this);
m_btn2.SetIcon(IDI_ICON1);
m_btn2.SetRounded(TRUE);

已知缺陷:圓角為繪製而非真實視窗區域,有背景色時會出現尖角殘留。解法:SetColor() 統一按鈕與視窗背景色。

CShadeButtonST - 多樣化背景陰影

#include "ShadeButtonST.h"
CShadeButtonST m_btn3;
m_btn3.SubclassDlgItem(IDC_BUTTON3, this);
m_btn3.SetIcon(IDI_ICON1);
m_btn3.SetShade(CShadeButtonST::SHS_METAL);

支援 9 種陰影效果:SHS_METAL、SHS_HARDBUMP、SHS_SOFTBUMP、SHS_GLASS、SHS_MATT 等,需額外引入 CeXDib.h/cpp。

取得最新版本

總結

CButtonST 以四個核心檔案提供企業級按鈕解決方案,從基礎圖示顯示到進階選單、超連結、透明效果一應俱全。兩個衍生類別更擴展了視覺風格多樣性。建議開發者下載原始碼深入研究其設計模式,將按鈕開發效率提升至新高度。

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