【MFC】多国语言工具栏

00. 目录

01. 案例概述

一个好的软件是要销售到世界各地,如果软件都使用英语,那么会给不会英语的用户带来不便,所以在软件开发阶段要做好多国语言的准备,为各国语言都设计相应的资源,Visual C++创建的应用程序可动态更改这些资源,实例实现动态更改工具栏资源。效果如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HnBjsv3i-1615024814211)(assets/image-20210306175955432.png)]

02. 开发环境

系统环境:Windows 10

开发环境:Visual Studio 2019

03. 关键技术

要实现多国语言工具栏,需要针对每种语言分别设计工具栏,如下图所示,分别设计了中文的工具栏和英文的工具栏。
在这里插入图片描述

不仅要将工具栏按钮的图标设计为中文和英文两种,而且还需要修改工具栏的语言属性。工具栏的属性如下图所示。

04. 程序设计

(1)新建一个基于对话框的应用程序。

(2)在工程中添加中文工具栏资源IDR_TOOLCHI,英文工具栏资源IDR_TOOLEN。
在这里插入图片描述

(3)按钮“english”的实现函数OnEnglish实现英文工具栏的切换,代码如下。


void CMy6DialogDlg::OnBnClickedButtonchi()
{
    
    
	// TODO: 在此添加控件通知处理程序代码
	//加载中文工具栏
	m_ToolBar.LoadToolBar(IDB_TOOLCHI);

	RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
}


void CMy6DialogDlg::OnBnClickedButtoneng()
{
    
    
	// TODO: 在此添加控件通知处理程序代码
	m_ToolBar.LoadToolBar(IDB_TOOLEN);

	RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
}


BOOL CMy6DialogDlg::OnEraseBkgnd(CDC* pDC)
{
    
    
	 //TODO: 在此添加消息处理程序代码和/或调用默认值
	CRect rect;
	GetWindowRect(&rect);
	CDC memDC;
	CBitmap bitmap;
	CBitmap* bmp = NULL;
	bitmap.LoadBitmap(IDB_BITMAP1);//装载背景位图
	memDC.CreateCompatibleDC(pDC);
	bmp = memDC.SelectObject(&bitmap);
	pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
	if (bmp) memDC.SelectObject(bmp);

	return TRUE;
}

05. 秘笈心法

Visual C++的资源

使用Visual C++开发应用程序,了解资源这个概念是很有必要的,Visual C++ 中图标、位图、对话框、工具栏、字符串都被称为资源,资源都有语言属性,应用程序可以调用同一语言属性的不同资源。

06. 源码下载

下载:【MFC】多国语言工具栏.rar

07. 附录

参考: 《Visual C++从入门到精通(项目案例版)》

猜你喜欢

转载自blog.csdn.net/dengjin20104042056/article/details/114449959