私は最近MFCを使用してそれを行ったので、MFCも使用しているように見えるので、おそらくそれが役立つでしょう:
の:
BOOL MyApp::InitInstance()
{
// Call this member function from within the InitInstance member function to
// enable and load the list of most recently used (MRU) files and last preview
// state.
SetRegistryKey("MyApp"); //I think this caused problem with Vista and up if it wasn't there
//, not really sure now since I didn't wrote a comment at the time
LoadStdProfileSettings();
}
//.。
//function called when you save or load a file
void MyApp::addToRecentFileList(boost::filesystem::path const& path)
{
//use file_string to have your path in windows native format (\ instead of /)
//or it won't work in the MFC version in vs2010 (error in CRecentFileList::Add at
//hr = afxGlobalData.ShellCreateItemFromParsingName)
AddToRecentFileList(path.file_string().c_str());
}
//function called when the user click on a recent file in the menu
boost::filesystem::path MyApp::getRecentFile(int index) const
{
return std::string((*m_pRecentFileList)[index]);
}
//..。
//handler for the menu
BOOL MyFrame::OnCommand(WPARAM wParam, LPARAM lParam)
{
BOOL answ = TRUE;
if(wParam >= ID_FILE_MRU_FILE1 && wParam <= ID_FILE_MRU_FILE16)
{
int nIndex = wParam - ID_FILE_MRU_FILE1;
boost::filesystem::path path = getApp()->getRecentFile(nIndex);
//do something with the recent file, probably load it
return answ;
}
}
アプリケーションがCWinAppから派生している必要があるだけです(そして、メニューを処理するためにCFrmWndから派生したクラスを使用します、多分あなたは同じことをしますか?)。
それがあなたのために働くかどうか教えてください。私がすべてを持っているかどうかわからない。