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. 源码下载
07. 附录
参考: 《Visual C++从入门到精通(项目案例版)》