首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VS2008 MFC 菜單欄添加圖標完整教程:安裝 SP1 + Feature Pack 啟用 Office 風格

     編輯:程式設計疑難解答

前置條件

  1. Visual Studio 2008 安裝 Service Pack 1 (SP1);
  2. 安裝 Visual C++ 2008 Feature Pack (內含 MFC 更新,源自 BCGSoft);
  3. 重啟 IDE,新建 MFC 專案時會出現新選項。

新建專案步驟

  1. File → New → Project → MFC Application;
  2. 專案向導中:「Application Type」選擇 Visual Studio 2008 / Office 2007 (Blue/Silver/Black);
  3. 「Menu and Toolbar」頁面勾選 Use menu icons 並指定圖標資源 ID;
  4. 完成向導,生成的框架代碼已自動包含 CMFCMenuBar、CMFCToolBar 並加載圖標。

現有專案遷移

  1. 將 CFrameWnd 繼承改為 CMDIFrameWndEx / CFrameWndEx;
  2. 在 OnCreate 中初始化菜單欄:
    if (!m_wndMenuBar.Create(this)) return -1;
    m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC);
    CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES); // 圖標資源 ID
    m_wndMenuBar.LoadToolBar(IDR_MAINFRAME, 0, 0, TRUE); // TRUE 表示鎖定
    
  3. 資源視圖中為菜單項設置圖標:右鍵菜單項 → Properties → Image ID 選擇工具欄圖標索引。

替代方案:BCGControlBar Professional

  • MFC Feature Pack 即源自 BCGSoft,購買 BCGControlBar 可獲得更豐富控件 (Ribbon、Property Grid、Gantt、Chart 等) 及技術支持;
  • 官網:bcgsoft.com。

常見問題

  • 圖標不顯示:確認 IDR_MENU_IMAGES 位圖資源寬度為 16px、高度為 16px * N,色深 24/32 位;
  • 菜單項禁用時圖標不變灰:需提供單獨的禁用狀態圖標或啟用 CMFCToolBar::GetDisabledImage() 自動生成;
  • 高 DPI 模糊:在 Manifest 中聲明 dpiAware,並提供 32x32 圖標資源。

總結

VS2008 + SP1 + Feature Pack 是零成本為 MFC 添加 Office 風格菜單圖標的標準路徑。現有專案遷移需調整基類與初始化代碼,資源圖標規格需符合 16px 規範。

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