用VC++打造有多语言菜单的应用程序(2)
将上述内容复制一份,拷贝到该资源文件的后面,并将上面内容的第一行修改为"IDR_English_MAINFRAME MENU PRELOAD DISCARDABLE",这样作也就是为英文菜单起了一个叫"IDR_MAINFRAME_ENGLISH"的名字。最后将各个菜单项目的中文说明修改为英文说明,内容如下:
"IDR_Englishi_MAINFRAME MENU PRELOAD DISCARDABLE"
BEGIN
POPUP "File(&F)"
BEGIN
MENUITEM "New(&N) Ctrl+N", ID_FILE_NEW
MENUITEM "Open(&O)... Ctrl+O", ID_FILE_OPEN
MENUITEM "Save(&S) Ctrl+S", ID_FILE_SAVE
MENUITEM "Save As(&A)...", ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "Print(&P)... Ctrl+P", ID_FILE_PRINT
MENUITEM "PrintView(&V)", ID_FILE_PRINT_PREVIEW
MENUITEM "Print Setup(&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) Ctrl+Z", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cut(&T) Ctrl+X", ID_EDIT_CUT
MENUITEM "Copy(&C) Ctrl+C", ID_EDIT_COPY
MENUITEM "Paste(&P) Ctrl+V", ID_EDIT_PASTE
END
POPUP "View(&V)"
BEGIN
MENUITEM "ToolBar(&T)", ID_VIEW_TOOLBAR
MENUITEM "StatusBar(&S)", ID_VIEW_STATUS_BAR
END
POPUP "Help(&H)"
BEGIN
MENUITEM "About MutiLanguageMenu(&A)...", ID_APP_ABOUT
END
END
修改过程序的资源文件并存盘退出后,接着要作的是在程序的CMainFrame类中加入变量CMenu m_CurrentMenu对象,用来根据需要装载中文或英文菜单资源。CMenu类是MFC提供的管理菜单的类,该类的LoadMenu()函数来装载菜单资源,函数的原型如下:
BOOL LoadMenu( UINT nIDResource );
函数中的参数nIDResource是菜单资源的ID号。如果函数调用成功返回"TRUE",否则返回"FLASE"。
菜单资源装载后,需要将该菜单设置为程序的当前菜单,这需要使用CWnd类的SetMenu()函数,该函数的原型如下:
BOOL SetMenu( CMenu* pMenu );
函数中的参数为一个指向菜单对象的指针。如果函数调用成功返回"TRUE",否则返回"FLASE"。