- ベストアンサー
最近使ったファイルからファイル名を取得したいです。
現在、VC++、MFC,SDIでプログラムを作成しています。 自動でできるメニュー項目の中に、「最近使ったファイル」というものがあるのですが、 これをクリックすることでタイトルバーがその名前に更新されるようですが、この情報を取得することで ファイル名を出力するにはどうすればよろしいでしょうか? (AfxMessageBoxで出力するだけで大丈夫です)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
MFCのフレームワークをそのまま使っているのであれば、最近使ったファイル(MRU)はレジストリに記録されています。 HKEY_CURRENT_USER\Software\[CWinAppの派生クラスのInitInstanceで設定した名前]\[ソフト名]\Recent File List にリストが入っていると思います。 MFC内部でもこのレジストリを読み取っているので、その辺りを調べたいなら、メニューID(ID_FILE_MRU1だったかな?)からハンドラを調べれば、どのように処理しているかわかるはずです。
その他の回答 (4)
なんだか、やりたいことが分からなくなってきました。 何をどうしたいのでしょうか? 変更???
- m-take0220
- ベストアンサー率60% (477/782)
CWinAppの派生クラスでメッセージマップを変更すれば、派生クラス側で処理できるはずです。 メッセージマップにどのように記述すればよいかは、CWinAppのメッセージマップを見ればわかりますよね。
- m-take0220
- ベストアンサー率60% (477/782)
ID_FILE_MRU_FILE1~ID_FILE_MRU_FILE16が用意されていて、CWinApp::OnOpenRecentFileで処理されているようです。 これ以上具体的な内容は、VC++のバージョンも示さずに聞く方が間違っています。まぁ、バージョンを示されても、同じバージョンがインストールされている人でないと答えられないので、あまり期待されない方がいいでしょうし。 MFCのソースはマシンに入っているはずなので、ご自分で検索するなりしましょう。
補足
CWinApp::OnOpenRecentFileじゃAPPで宣言、定義されているので、変更できない気がするのですが・・・。(変更しても反映されない) バージョンは6.0になります。
最近使ったファイルに限らず, ファイルを開くと,ドキュメントクラスの OnOpenDocument が呼ばれるので, 通常はここで処理すれば OK です。 「最近使ったファイル」を選んだ時だけ特別にとなると, コマンドハンドラかその下のどこかを乗っ取ればいいと思います。
補足
どこでその処理を行っているか具体的に知りたいです。。。