[VC]将最近使用文件放入子菜单

来源:互联网 发布:篮球视频软件 编辑:程序博客网 时间:2024/06/05 10:22

下面两种方法原理一样.我在使用的时候引起了另外一个bug, 还以为不行呢...

第一种办法:

1   将菜单中的文件-》最近使用POPUP属性改为true   
2   将子菜单的第一项命名为ID_FILE_MRU_FILE1   
3   在UPDATE_COMMAND_UI的消息隐射函数中加代码  

  if(pCmdUI->m_nIndex==0)   
  OnUpdateRecentFileMenu(pCmdUI);   

 

第二种办法:

在你的头文件里声明以下类

class CMyApp : public CWinApp
{
// ...
file://{{AFX_MSG(CMyApp)
afx_msg void OnUpdateRecentFileMenu(CCmdUI* pCmdUI);
file:
//}}AFX_MSG
// ...
}
;


在你的源文件中实现声明的类.

BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
file:
//{{AFX_MSG_MAP(CMyApp)
      ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateRecentFileMenu)
file:
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CMyApp::OnUpdateRecentFileMenu(CCmdUI* pCmdUI)
{
if (pCmdUI->m_pMenu == NULL ||
    pCmdUI
->m_pMenu->GetMenuItemID(pCmdUI->m_nIndex) != ID_FILE_MRU_FILE1)
{
   
return;
}

CWinApp::OnUpdateRecentFileMenu (pCmdUI);
   
return;
}


在资源编程器中当你建立菜单时,"新近打开的文件"菜单项选中Pop-up属性,并且
该项目的ID须与程序中相对应,这里为ID_FILE_MRU_FILE1.

 

原创粉丝点击