在 MFC SDI 程序中实现多语言程序界面
来源:互联网 发布:值得入手高达模型 知乎 编辑:程序博客网 时间:2024/06/05 11:33
在 MFC SDI 程序中实现多语言程序界面
今天举个例子,说说怎样使用 CLanguage 类,在 MFC SDI 程序中实现多语言程序界面。
因为 MFC 包装了一些字符串显示处理,所以与 Win32 工程中可能有一点点不一样。主要有两个地方:
- 因为语言列表菜单项是动态生成的,MFC 的机制导致这些菜单项是不可用的。所以必须在 Update Command UI 的时候,使语言列表菜单项可用。
- 菜单提示是 CFrameWnd 实现的,我们必须重载他的 GetMenuString(),用 CLanguage 的 TranslateString() 替换它的 AfxLoadString() 载入资源字符串。
下面说说简要的步骤吧:
- 把 Language.h/cpp 加入到工程的,在 cpp 中 #include "StdAfx.h"。
- 定义一个全局变量 g_hInst,在 InitInstance() 中使它赋值为资源模块句柄 (一般为 theApp.m_hInstance)。
- InitInstance() 中 调用 CLanguage::Initialize() 确定当前要使用的语言。
- CMainFrame::OnCreate() 中调用 CLanguage::TranslateMenu() 翻译主菜单。
- 重载 CFrameWnd::GetMenuString(),用 CLanguage::TranslateString() 替换它的 AfxLoadString() 载入资源字符串。
- 每个对话框的 OnInitdialog() 中调用 CLanguage::TranslateDialog() 翻译对话框。
- 其它与 Win32 工程一样……
另外,如果在 MDI 中使用,可能稍有不一样,因为我在另一篇文章中说过,Popup Menu 的 位置不能改变。所以,每次切换语言的时候,必须使所有的 MDI 子窗口不要最大化 (因为最大化会在主菜单中加入一个图标菜单,那样 Popup 位置就变了)……
看代码吧……
下载: SdiML (34K,Visual C++ 6 项目)
最新最早最热
- 11条评论
- 在 MFC SDI 程序中实现多语言程序界面
- 如何在MFC的SDI程序中实现多视图
- 如何在MFC的SDI程序中实现多视图
- 如何在MFC的SDI程序中实现多视图
- 在MFC SDI程序中使用SDL
- 在MFC SDI程序中使用SDL
- 在MFC SDI程序中使用SDL
- MFC在SDI中添加背景图片以及改变程序图标的方法
- MFC SDI 利用双缓冲实现截图程序
- MFC单文档(SDI)全屏程序实现方法
- MFC中SDI程序创建流程的回顾
- MFC SDI程序中OnDraw,OnPait,OnEraseBkGnd,Invalidate,UpdateWindow
- MFC程序(SDI)一开始运行最大化
- MFC程序(SDI)一开始运行最大化详解
- MFC程序(SDI)一开始运行最大化
- 浅谈MFC单文档(SDI)程序
- MFC程序(SDI)一开始运行最大化
- 用VB6实现程序多语言界面
- 377. Set a thief to catch a thief. 以贼捉贼
- Delphi TWebBrowser(1)
- 软件结构设计
- 郑轻校赛总结
- 大公司病
- 在 MFC SDI 程序中实现多语言程序界面
- MFC的多国语言界面的实现
- ORA-01442: column to be modified to NOT NULL is already NOT NULL
- 神州数码UDP报文密文字典
- openlayers 加载googlemap v3 遭遇弹出copyright 异常的解决
- How Hadoop Works? HDFS case study
- 屏蔽双击选中文字的解决办法,兼容ie,google,firefox
- 今天的让你们猜一下子的即时通讯
- hdu 二维树状数组 简单题目 靠。。。。。扯蛋的悲哀,如果上天给我一种干掉你的愿望,我宁愿放弃——努力的结晶