ためMFCメニューをカスタムドロー:ハウツーDocTemplate
CSingleDocTemplate pDocTemplate(
new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CMyDataView)
)
);
AddDocTemplate(pDocTemplate);
IDR_MAINFRAMEは私MAINMENUの識別子です。 このメニューをカスタムで作成する最も良い方法は何ですか?私は既にコンテキストメニューのための素晴らしい仕事をするCMenuから派生するクラスを持っています。違いは、このメニューはフレームワークによって作成されますが、自分でコンテキストメニュを作成することです。
customMenu.LoadMenu(IDR_MAINFRAME);
customMenu.ChangeToOwnerDraw(customMenu, *m_MenuProperties);
m_pMainWnd->SetMenu(&customMenu);
を、何とか(ポップアップしている)最初の項目について、MeasureItemをクリックし、小さな広場で、その結果、customMenuクラスのインスタンスで焼成されていない:MAINMENUを上書きする
は、私が試しました異なるボタンのテキストが互いに重なって表示されます。
MENUITEMは期待通りに表示されますが、すべてのPOPUPがサブメニュー(サブサブサブサブメニュー)に間違っている(読み込み:MeasureItemは呼び出されません)。 sub、subsub、およびsubsubsubmenusのMENUITEMSでは、フレームワークからMeasureItem呼び出しを受け取ります。
私はMFCがDoc(サブ)メニューを動的に作成すると思います。 WM_INITMENUPOPUPをインターセプトしてそこからカスタム描画を作成しようとするかもしれません。 – VuVirt
あなたの 'CMainFrame'はどのクラスから派生していますか?それが 'CFrameWndEx' |' CMDIFrameWndEx'で、 'CMFCMenubar'を使用しているのであれば、通常のメニューの動作がMFC Feature Packによってオーバーライドされるので、あなたが望むように動作しない可能性が高いでしょう。 – sergiol