我intialize我的MFC應用程序的視圖這一行:HOWTO自定義繪製一個MFC菜單的DocTemplate
CSingleDocTemplate pDocTemplate(
new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CMyDataView)
)
);
AddDocTemplate(pDocTemplate);
IDR_MAINFRAME是我的MainMenu標識符。 使這個菜單自定義繪製的最佳方式是什麼?我已經有了一門來自CMenu的課程,它對於contextmenus來說非常棒。不同之處在於我自己創建了我的contextmenus,而這個菜單是由框架創建的。
要覆蓋MainMenu的,我想:
customMenu.LoadMenu(IDR_MAINFRAME);
customMenu.ChangeToOwnerDraw(customMenu, *m_MenuProperties);
m_pMainWnd->SetMenu(&customMenu);
,但不知何故,第一個項目(這是彈出窗口)時,MeasureItem沒有在customMenu類實例化解僱,導致在一個小廣場上點擊開啓和不同按鈕的文字相互重疊。
MENUITEMs按預期方式顯示,但對於每個子菜單(以及subsub和sububsubmenus)的POPUP,樣式錯誤(讀取:MeasureItem未調用)。對於sub,subsub和sububsubmenus中的MENUITEMS,我從框架接收一個MeasureItem調用。
我想MFC會動態地創建Doc(子)菜單。你可以嘗試攔截WM_INITMENUPOPUP並從那裏自定義繪製它們。 – VuVirt
你的'CMainFrame'派生自哪一類?如果它是'CFrameWndEx' |'CMDIFrameWndEx',並且您正在使用'CMFCMenubar',那麼您很可能無法按照您想要的方式工作,因爲MFC Feature Pack會覆蓋正常菜單的行爲。 – sergiol