メニューのオーナードローについて質問させて下さい。
SDI/基本クラスCFormViewでMFCアプリを作成し、
ViewクラスのOnInitialUpdate()にて
CMenu *pMenu = AfxGetMainWnd()->GetMenu();
CMenu *pSubMenu = pMenu->GetSubMenu(0);
pSubMenu->ModifyMenu(ID_FILE_NEW, MF_BYCOMMAND | MF_OWNERDRAW, NULL);
を記述しました。
そしていざ、WM_DRAWITEMを処理しようと思い、CMainFrameクラスのOnDrawItem()内で
switch (lpDrawItemStruct->itemID){
case ID_FILE_NEW: // 今回オーナードローに指定したリソースID
(処理)
}
として処理を行いたいのですが、どうもここにはWM_DRAWITEMが飛んできていない様なの
です・・・
メニューエディタで作成したメニューのオーナードローについて
描画処理はどこで行えば良いのでしょうか・・・?
CMenuをサブクラス化して、CMenuのDrawItemで処理しなければならなそう。
http://www.athomejp.com/goldfish/mfc/window/ownermenu.asp
うーむ・・・
ポップアップメニューならサブクラス化したメニューで呼び出せるのですが、
CFormViewやCViewでウィザードが生成するメニューのサブクラス化が、どうしても解り
ません・・・
CMenu* pMenu = AfxGetMainWnd()->GetMenu();
でメニューのハンドル取得して、それを基にサブクラス化させるのでしょうか?
やりたいことが少し微妙ですが、
http://www.vcppclub.com/samples/ctrl/p_menuex/menuex.html
のサンプルは参考になりますでしょうか?
Blueさん、ありがとうございます。
まさにやりたい事がこれなので、大変参考になりました。