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

VC++ 工具列按鈕顯示文字標籤:圖文並茂、狀態持久化與動態切換

     編輯:關於VC++

預設 MFC 工具列按鈕僅顯示圖示,需滑鼠停留才彈出 ToolTip 顯示文字。本文實作工具列按鈕「圖示+文字」雙模式切換,支援選單勾選狀態儲存至 INI/登錄檔、系統 DPI 變更自動調整、按鈕寬度自動適應最長文字,完整提升使用者體驗。

關鍵 API

  • CToolBar::SetSizes(SIZE sizeButton, SIZE sizeImage):設定按鈕與圖示尺寸,按鈕寬度至少比圖示寬 7 像素、高 6 像素。
  • CToolBar::SetButtonText(int nIndex, LPCTSTR lpszText):設定指定索引按鈕文字(含分隔符索引)。
  • CToolBar::EnableToolTips(BOOL):啟用/停用 ToolTip。
  • CFrameWnd::ShowControlBar(CControlBar*, BOOL, BOOL):顯示/隱藏控制列並選擇是否延遲重繪。

實作步驟

  1. 成員變數:BOOL m_bTextTips(狀態)、SIZE m_sizeMax(最大按鈕尺寸)。
  2. 建構/解構函數:讀寫設定檔 AfxGetApp()->GetProfileInt/WriteProfileInt(_T("Setting"), _T("m_bTextTips"), 1)。
  3. 選單命令:ID_TOOL_TEXTTIPS 切換狀態,OnUpdateToolTexttips 同步勾選。
  4. 文字陣列:靜態陣列 TextTips[] 對應按鈕索引(分隔符留空)。
  5. 核心更新函數 UpdateToolBar(BOOL bRecalc):
    
    void CMainFrame::UpdateToolBar(BOOL bRecalc) {
        CRect rc; SIZE szBtn, szImg;
        if (bRecalc) {
            m_sizeMax.cx = m_sizeMax.cy = 0;
            for (int i=0; i
  6. 初始化呼叫:OnCreate 尾端呼叫 UpdateToolBar()。
  7. 切換命令:OnToolTexttips 切換旗標後呼叫 UpdateToolBar(FALSE)(避免重複計算)。
  8. 系統設定變更:處理 WM_SETTINGCHANGE 呼叫 UpdateToolBar() 自動適應 DPI/字體變更。

效果展示

編譯執行後,工具列按鈕即時顯示「新建」「開啟」「儲存」等文字標籤,再次點選選單項目可隱藏文字恢復純圖示模式,狀態自動保存下次啟動生效。

註:假設專案已建立標準 MFC 工具列(m_wndToolBar)。

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