MFC切换语言 VS2017

下面我要介绍的是MFC工程多语言切换
首先我们创建工程,创建工程之后添加菜单选项,加入我们需要切换的语言

在这里插入图片描述

接下来为我们切换语言添加函数,没有语言都需要添加,这里我只添加了一种
在这里插入图片描述
然后添加程序,在我们点击语言的时候切换语言

int m_bRestartFlag = false;
 /*获取线程当前语言*/
 LCID lcidNew = GetThreadLocale();
 if (LANG_ENGLISH == PRIMARYLANGID(LANGIDFROMLCID(lcidNew)))
 {
  lcidNew = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT);
 }
 else
 {
  lcidNew = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
 }
 // 把语言设置写入配置文件
 CFile file;
 file.Open(_T("Language.ini"), CFile::modeWrite | CFile::modeCreate | CFile::typeBinary);
 file.Write(&lcidNew, sizeof(lcidNew));
 file.Close();
 // 关闭窗口
 m_bRestartFlag = TRUE;
 PostMessage(WM_CLOSE, 0, 0);
 //重启应用程序 
 if (m_bRestartFlag)
 {
  CString strFileName = _T("");
  GetModuleFileName(NULL, strFileName.GetBuffer(MAX_PATH), MAX_PATH);
  ShellExecute(NULL, _T(""), strFileName, NULL, NULL, SW_SHOWNORMAL);
  strFileName.ReleaseBuffer();
 }

添加好语言切换的代码后,我们需要在窗口构建之前读取我们的配置文件,修改线程语言
在这里插入图片描述

以上代码添加结束之后,我们接下来要做的就是比较麻烦的工作了->翻译窗口
在这里插入图片描述
首先为我们每一个窗口文件插入一个副本,副本的语言要和我们需要显示的语言一致
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于MessageBox函数不能切换语言,这里我把MessageBox函数重载了一下暂时没有想到其他的好办法

CString   m_BoxText[][2] = 
{
 {_T("你好"),_T("hello")},
};
int Ctests1Dlg::MessageBox(CString str)
{
	for (size_t i = 0; i < (sizeof(m_BoxText)/sizeof(m_BoxText[0])); i++)
	{
		if (!str.CompareNoCase(m_BoxText[i][0]))
		{
		    AfxMessageBox(m_BoxText[i][1]);
		   return 0;
	        }
	}
	return -1;
}

以上就是我做实验用的测试程序,由于前几天在网上找例程花了很多时间,下载下来的例程也不能用,最后花了点时间完成了这个小程序,如果有大神可以指点一下那是最好了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值