最近使ったファイルをサブメニューにしたい – プログラミング – Home

最近使ったファイルをサブメニューにした...
 
通知
すべてクリア

最近使ったファイルをサブメニューにしたい


ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 24年前
投稿: 187
Topic starter  

リソースエディタでメニュー(ファイル)に 最近使ったファイル をポップアップで作成して、
サブメニューに ID_FILE_MRU_FILE1 を追加しました.

VC++のような感じにしたいのですが、上記方法では出来ませんでした。
最近使ったファイルの項目の上にできてしまいます。

CWinAppの関数を使わないで、CRecentFileList を自分で管理するしかないのでしょうか?

よろしくお願いします。

WIN2000 SP2
VC6.0 SP5
MFC使用


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

テクニカルノート21の「ポップアップメニューのネスト」によると、

ポップアップメニューがある場合、
まずポップアップメニュー自体のON_UPDATE_COMMAND_UIが発生する。
このとき、サブメニューの先頭IDに対応する更新ハンドラが呼ばれる(なんだそりゃ!)。
次に、サブメニューの各々について更新ハンドラを呼び出すので、
再度サブメニューの先頭IDに対応する更新ハンドラが呼ばれる。
この2つは、CCmdUI::m_pSubMenuがNULLかどうかで区別しろ。

だそうです。

MFCのMRU関連の処理を見ても、これに対応する処理はありません。
#不自然な仕様はバグのもと(^^;

解決方法としては、
C*AppクラスにID_FILE_MRU_FILE1のハンドラを追加して
次のようにします。

void C*App::OnUpdateFileMruFile1(CCmdUI* pCmdUI)
{
if (pCmdUI->m_pSubMenu == NULL)
CWinApp::OnUpdateRecentFileMenu(pCmdUI);
else
// ポップアップメニュー自体の更新があればここに...
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました