下载: SdiML (34K,Visual C++ 6 项目)

今天举个例子,说说怎样使用 CLanguage 类,在 MFC SDI 程序中实现多语言程序界面。

因为 MFC 包装了一些字符串显示处理,所以与 Win32 工程中可能有一点点不一样。主要有两个地方:

  • 因为语言列表菜单项是动态生成的,MFC 的机制导致这些菜单项是不可用的。所以必须在 Update Command UI 的时候,使语言列表菜单项可用。
  • 菜单提示是 CFrameWnd 实现的,我们必须重载他的 GetMenuString(),用 CLanguage 的 TranslateString() 替换它的 AfxLoadString() 载入资源字符串。

下面说说简要的步骤吧:

  1. 把 Language.h/cpp 加入到工程的,在 cpp 中 #include "StdAfx.h"。
  2. 定义一个全局变量 g_hInst,在 InitInstance() 中使它赋值为资源模块句柄 (一般为 theApp.m_hInstance)。
  3. InitInstance() 中 调用 CLanguage::Initialize() 确定当前要使用的语言。
  4. CMainFrame::OnCreate() 中调用 CLanguage::TranslateMenu() 翻译主菜单。
  5. 重载 CFrameWnd::GetMenuString(),用 CLanguage::TranslateString() 替换它的 AfxLoadString() 载入资源字符串。
  6. 每个对话框的 OnInitdialog() 中调用  CLanguage::TranslateDialog() 翻译对话框。
  7. 其它与 Win32 工程一样……

另外,如果在 MDI 中使用,可能稍有不一样,因为我在另一篇文章中说过,Popup Menu 的 位置不能改变。所以,每次切换语言的时候,必须使所有的 MDI 子窗口不要最大化 (因为最大化会在主菜单中加入一个图标菜单,那样 Popup 位置就变了)……

看代码吧……

在 MFC SDI 程序中实现多语言程序界面相关推荐

  1. Ubuntu中编写C语言程序

    Ubuntu中编写C语言程序 1.准备工作 1.1 安装GCC 2.使用GCC编写C语言程序 2.1 编写一个Hello World程序 2.2 编写一个主程序文件main1.c和子程序文件sub1. ...

  2. C语言C程序的构成,C语言程序的构成.doc

    C语言程序的构成 C语言程序的构成 章 C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础. 不把C语言基础打扎实,很难成为程序员高手. 一.C语 ...

  3. C++程序翻译成C语言程序

    C++程序翻译成C语言程序 C++语言是在C语言的基础上发展过来的,第一个C++的编译器实际上是将C++程序翻译成C原因程序,再通过C语言编译器进行编译. 然而C语言中没有类的概念,只有结构,而且函数 ...

  4. php小程序码生成并保存,小程序中如何生成小程序码

    导语: 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的理念,用户不用关心是否 ...

  5. 在Windows程序中打开控制台的程序

    //在Windows程序中打开控制台的程序 #include <stdio.h> #include <io.h> #include <fcntl.h> BOOL C ...

  6. 小程序 小程序中打开其他小程序、小程序跳转其他小程序、微信群聊中打开小程序

    1.小程序中打开其他小程序可将要打开的小程序通过半屏的形态快速拉起(1)配置app.json的embeddedAppIdList字段中声明需要通过半屏形态打开的小程序,若不配置将降级为普通的小程序跳转 ...

  7. 8255a初始化c语言程序,8255A的c语言程序.doc

    8255A的c语言程序 8255A的c语言程序 [实例24]用8243扩展I/O端口 #include sbit ContrBit0=P1^0; sbit ContrBit1=P1^1; sbit C ...

  8. 在程序中支持多语言环境,支持asp.net和winform。

    图一, 资源文件结构 根据上面的资源文件结构,在程序中调用资源选项应该是:control.Text = Resources.MultiString.SR.XXX. XXX返回的是哪种语言将根据你定义的 ...

  9. 在Linux系统中运行C语言程序

    正式学习c语言的第一天   2022/1/10 在之前的学习中已经在Windows系统中用Microsoft VC++上实现了C语言程序的运行,现在将在Linux系统上运行C语言程序. 首先明确C语言 ...

最新文章

  1. python学习第三天-Linux入门之二
  2. 看完这篇文章之后,终于明白了编译到底怎么回事。
  3. 通过/proc/sys/net/ipv4/优化Linux下网络性能
  4. 计算机二级题目小汽车大客车,浙江省计算机二级办公软件Excel练习题.xls
  5. caffe在ubuntu18.04下编译
  6. java笔试题(1)
  7. Python字符串类型:字符串索引、字符串切片、字符串format()方法格式化、字符串操作符、字符串处理函数
  8. C/C++常见问题(转)
  9. Python语言解析xml文件
  10. 左神直通BAT算法(进阶篇)-上
  11. Linux内核配置和编译过程详解
  12. linux 文件夹复权,大趋势6x无盘系统安装配置说明.doc
  13. 16 岁少年前往腾讯总部要求解封 QQ 账号;微软发内部信辟谣:没有关闭微软苏州的相关计划;Go 1.20 发布|极客头条
  14. 中英文互译在线翻译-在线翻译软件
  15. Idea配置自动导包
  16. python毕业设计作品基于django框架 校园二手书籍交易系统毕设成品(5)任务书
  17. 江苏自考计算机通信工程,2020年4月江苏自考A2080708计算机通信工程考试安排(本科)...
  18. 7G的森林火情数据集,文末附数据集和源代码
  19. onethink-1.1开发版安装
  20. Sofa framework 学习笔记

热门文章

  1. 流包装器实现WebShell免杀
  2. 数据库框架的log4j日志配置
  3. OpenStack从入门到放弃
  4. 【Unity3D与23种设计模式】中介者模式(Mediator)
  5. Web测试到底是在测什么(资料合集)
  6. ASP.NET实现推送文件到浏览器的方法
  7. Laravel-5.1 ---- 将mews captcha整合到项目中!
  8. 2010经典句句 学会了以后你的嘴巴会很流利 (转)
  9. Silverlight WCF 上传实现
  10. firewalld的防火墙