MFC中英文切换实现过程中遇到的问题

本文介绍了在MFC开发中实现中英文切换功能时遇到的问题及解决策略。通过添加菜单项,设置线程语言并保存配置,以实现应用重启后的语言切换。然而,在XP系统中,由于GetThreadUiLanguage函数的缺失,导致报错。作者通过判断资源字符串的语言类型作为临时解决方案,并讨论了使用DLL支持多语言的可能性。
摘要由CSDN通过智能技术生成

参考http://www.cnblogs.com/xianyunhe/archive/2011/09/02/2163842.html

MFC中英文切换实现过程中遇到的问题

最近在开发一个测试工具,因交付的使用对象是攻城狮,为使气质与之匹配,故而选用了MFC开发框架。

收尾阶段,boss希望能添加上中英文切换的功能,为不至于貂尾续狗,故而考虑直接使用MFC所支持的多语言资源。

基本思路是提供子菜单项,响应点击执行相关切换。因为窗口在初始化之初就根据当前语言环境加载了默认的资源文件,因而切换时必须重启应用才有效,为此考虑添加警示弹框,以免攻城狮在测试的过程中切换语言导致不必要的公司财产损失及人员伤残。

正传不多说,言归废话。

添加菜单项

添加中英文切换子菜单

插入一份英文资源副本

插入副本
注意选择语言

设置线程语言并保存至配置文件,以在重启时读入并配置

以下是切换成中文的部分响应代码:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC(Microsoft Foundation Class)是一种开发Windows桌面应用程序的框架,可以使用动态链接库(DLL)来实现中英文切换。 首先,我们需要创建一个DLL项目,并在其添加资源文件,包括不同语言的字符串和对应的ID。比如,可以创建两个资源文件,一个是英文字符串,另一个是文字符串,分别命名为en-US.res和zh-CN.res。 然后,在MFC应用程序使用LoadLibrary函数加载DLL,并调用FindResource和LoadResource函数加载对应语言的资源。可以通过设置不同的语言标识符参数来选择加载不同的资源。例如,对于英文资源,可以使用以下代码: HMODULE hModule = LoadLibrary(_T("dll路径")); HRSRC hResource = FindResource(hModule, MAKEINTRESOURCE(IDR_ENGLISH), RT_RCDATA); HGLOBAL hMemory = LoadResource(hModule, hResource); LPVOID lpResource = LockResource(hMemory); CString strEnglish((const char*)lpResource); FreeLibrary(hModule); 对于文资源,只需将IDR_ENGLISH更改为IDR_CHINESE即可。 最后,使用CString或其他方法将获取的字符串显示在MFC应用程序的界面上,即可实现中英文切换。 需要注意的是,为了方便切换语言,在MFC应用程序还需提供切换语言的选项或设置,通过相应的逻辑代码来实现切换时重新加载DLL并更新界面显示的字符串。 总结起来,借助MFC的特性和DLL的加载能力,我们可以在应用程序通过加载不同的资源文件来实现中英文切换。 ### 回答2: 在MFC使用DLL实现中英文切换,可以通过以下步骤进行: 第一步,创建一个DLL项目,用于存储中英文的字符串资源。可以在资源文件添加对应的中英文字符串,并在代码定义一个函数来获取这些字符串。 第二步,创建一个MFC应用程序项目。在应用程序的初始化过程,加载DLL文件并获取所需要的字符串资源。可以使用LoadLibrary函数加载DLL文件,并使用GetProcAddress函数获取相应函数的地址。 第三步,创建一个语言选择界面,用于让用户选择要使用的语言。可以使用对话框或者菜单添加语言选项。用户选择语言后,将相应的语言标识保存在配置文件或注册表。 第四步,根据用户选择的语言标识,动态修改应用程序的字符串显示。可以通过调用DLL的函数来获取对应的中英文字符串,然后将其显示在对应的界面控件上。 第五步,在应用程序的所有界面添加语言切换的功能。可以在每个界面的菜单栏或功能栏上添加一个语言切换的按钮或选项,用户点击按钮或选择选项后,重新加载相应语言的字符串资源,并刷新界面的所有文本。 通过以上步骤,就可以实现MFC应用程序的中英文切换功能。用户可以根据自己的需要选择合适的语言,并在应用程序动态更改界面文字的显示。这样可以提供更好的用户体验,同时方便应对不同语言环境下的需求。 ### 回答3: 在MFC实现中英文切换可以通过使用动态链接库(DLL)的方式来实现。首先,我们可以在资源文件创建多语言版本的字符串资源,分别对应文和英文。然后,将这些字符串资源保存到一个DLL文件。 在MFC应用程序,我们需要在主窗口初始化时加载这个DLL文件,以便在运行时可以动态切换语言。可以在InitInstance函数使用LoadLibrary函数加载DLL文件,并使用AfxSetResourceHandle函数将资源句柄设置为DLL文件的句柄。 当需要切换语言时,我们可以通过调用AfxSetResourceHandle函数来重新设置资源句柄为DLL文件的句柄,然后强制重绘界面。这样就可以实现界面上的文本、标签等显示为不同的语言了。 另外,为了方便管理和切换语言,可以根据需求在应用程序添加一个菜单或者工具栏,通过点击菜单项或者工具栏按钮在运行时切换语言。当用户通过菜单或者工具栏切换语言时,可以根据用户选择的语言,重新设置资源句柄为相应DLL文件的句柄,并强制重绘界面。 需要注意的是,在切换语言的过程,我们需要注意重新加载语言资源,例如重新加载菜单资源、工具栏资源等,以便将其显示为对应的语言。 总的来说,通过使用DLL实现中英文切换可以让我们的应用程序更加灵活多语言化,提供更好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值