00. 目錄
文章目錄
- 00. 目錄
- 01. 案例概述
- 02. 開發環境
- 03. 關鍵技術
- 04. 程式設計
- 05. 秘笈心法
- 06. 原始碼下載
- 07. 附錄
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++從入門到精通(專案案例版)》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267000.html
標籤:其他
