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

MFC 實現 Office 2000 風格智慧型選單與停駐工具列

     編輯:關於C語言

移植並改良 Office 2000 風格智慧型選單 (自動隱藏不常用項目) 至 MFC 專案,支援多文件介面 (MDI)、分頁式子視窗、自繪選單等進階功能。

效果對比


整合步驟 (僅限 MDI 專案)

  1. 資源字串表 新增兩項:
    • ID_SHOWFULL (32792) - 「顯示完整選單」
    • ID_INTMODE (32794) - 「開啟/關閉智慧選單模式」
  2. 加入原始碼:將 OffMenu 資料夾所有 .cpp/.h 加入專案。
  3. 修改 MainFrm.h:
    #include "MDIFrmEx.h"
    #include "ToolBarEx.h"
    
    class CMainFrame : public CMDIFrameEx {  // 原為 CMDIFrameWnd
        CToolBarEx m_wndToolBar;             // 原為 CToolBar
    };
  4. 修改 MainFrm.cpp:更新動態建立巨集、訊息對應、OnCreate 基底類別呼叫皆改為 CMDIFrameEx。
  5. 修改 MyApp.h:應用程式類別繼承 CWinAppEx (含 WinAppEx.h)。
  6. 修改 MyApp.cpp:
    • 訊息對應基底類別改為 CWinAppEx。
    • InitInstance 中文件範本改用 CMultiDocTemplateEx,框架視窗建立流程微調。
  7. 建置執行 即可擁有 Office 2000 風格介面。

自訂智慧選單行為

重寫 CMenuBar 兩個虛擬函式:

  • WORD IncMenuUsage(CMenuEx*, UINT pos, WORD curUsage):更新選單項使用計數。
  • BOOL EvaluateIfGrayed(CMenuEx*, UINT pos, WORD& curUsage, int iMed, int iRange):判斷是否隱藏/灰化,可修改使用計數。

需儲存應用程式自訂資料時,可使用 CMenuEx::GetExtraDataPtr(UINT)。

注意: 原始碼基於舊版 VC 範例修改,單文件介面 (SDI) 需自行調整 CMultiDocTemplateEx、CMDIFrameEx 相關類別。附帶範例為抓圖程式介面部分,含分頁顯示、自繪選單等完整功能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved