我正在使用像靜態文本,複選框等各種控件的Win32對話框,並且所有字符串都需要針對不同的語言進行本地化。 我設計了美國國際英語對話框。但是當我把本地化的字符串,不適當的,我必須改變每個intl的佈局。如何本地化win32對話框?
有沒有更好的方法來做到這一點?
我可以創建一個對話框,其中一個佈局應該適用於所有Intsl?
我正在使用像靜態文本,複選框等各種控件的Win32對話框,並且所有字符串都需要針對不同的語言進行本地化。 我設計了美國國際英語對話框。但是當我把本地化的字符串,不適當的,我必須改變每個intl的佈局。如何本地化win32對話框?
有沒有更好的方法來做到這一點?
我可以創建一個對話框,其中一個佈局應該適用於所有Intsl?
我記得讀書的地方,在MS GUI資源的初始佈局時,他們最初創建對話框,在德國,然後仔細檢查至少佈局在英語和日語。
一旦對話框佈局容納那些三種語言,它通常並不需要進一步佈局的變化。您可以考慮使用ShowHTMLDialog。如果您可以計算出將數據導入和導出對話框的黑魔法,HTML具有自動縮放以適應文本邊界的控件的優點。
在過去,我實現從CDialog
以下派生類稱爲CLanguageDialog
。然後我在OnInitdialog()
中撥打loadLanguage()
。然後,我的應用程序中的所有對話框都將從CLanguageDialog
而不是CDialog
派生。
void CLanguageDialog::loadLanguage()
{
CWnd *pChild = this->FindWindowEx(this->m_hWnd, NULL, NULL, NULL);
while(pChild)
{
theApp.languageLoader.loadStringForWnd(pChild);
pChild = pChild->GetNextWindow();
}
}