c++ mfc实现中英文菜单的动态切换

1 新建SDI

2 在视图菜单下面添加菜单-英文,ID为ID_ENGLISH

3 用文本打开项目下的资源文件

4 在对应的中文菜单下面添加下面的代码

IDR_MAINFRAME_ENGLISH MENU PRELOAD DISCARDABLE
BEGIN
POPUP "File(&F)"
BEGIN
MENUITEM "New(&N)\tCtrl+N",             ID_FILE_NEW
MENUITEM "Open(&O)...\tCtrl+O",         ID_FILE_OPEN
MENUITEM "Save(&S)\tCtrl+S",            ID_FILE_SAVE
MENUITEM "Save as(&A)...",              ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "Print(&P)...\tCtrl+P",        ID_FILE_PRINT
MENUITEM "Print Preview(&V)",           ID_FILE_PRINT_PREVIEW
MENUITEM "Print Setting(&R)...",        ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "Recent Files",                ID_FILE_MRU_FILE1, GRAYED
MENUITEM SEPARATOR
MENUITEM "Exit(&X)",                    ID_APP_EXIT
END
POPUP "Edit(&E)"
BEGIN
MENUITEM "Undo(&U)\tCtrl+Z",            ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cut(&T)\tCtrl+X",             ID_EDIT_CUT
MENUITEM "Copy(&C)\tCtrl+C",            ID_EDIT_COPY
MENUITEM "Paste(&P)\tCtrl+V",           ID_EDIT_PASTE
END
POPUP "View(&V)"
BEGIN
MENUITEM "ToolBar(&T)",                 ID_VIEW_TOOLBAR
MENUITEM "StatusBar(&S)",               ID_VIEW_STATUS_BAR
MENUITEM "Chinese",                     ID_ENGLISH
END
POPUP "Help(&H)"
BEGIN
MENUITEM "About Test(&A)...",     ID_APP_ABOUT
END
END

5 给CMainFrame添加成员变量

enum Enum{e,c}m_current;
	CMenu m_englistmenu;
	CMenu m_chinesemenu;

6 在CMainFrame的构造函数中添加

m_current=c;

7 在CMainFrame的OnCreate里面添加 

m_englistmenu.LoadMenu("IDR_MAINFRAME_ENGLISH");
	HMENU m_hMenu=::GetMenu(this->m_hWnd); // 保存中文菜单
	m_chinesemenu.Attach(m_hMenu);

8 实现英文菜单命令消息

void CMainFrame::OnEnglish()
{
	// TODO: 在此添加命令处理程序代码
	if(m_current==e)
	{
		SetMenu(&m_chinesemenu);
		m_current=c;
	}
	else
	{
		SetMenu(&m_englistmenu);
		m_current=e;
	}
}

猜你喜欢

转载自blog.csdn.net/dxm809/article/details/114182064