2010-04-08 93 views
0

我正在使用像靜態文本,複選框等各種控件的Win32對話框,並且所有字符串都需要針對不同的語言進行本地化。 我設計了美國國際英語對話框。但是當我把本地化的字符串,不適當的,我必須改變每個intl的佈局。如何本地化win32對話框?

有沒有更好的方法來做到這一點?

我可以創建一個對話框,其中一個佈局應該適用於所有Intsl?

回答

1

我記得讀書的地方,在MS GUI資源的初始佈局時,他們最初創建對話框,在德國,然後仔細檢查至少佈局在英語和日語。

一旦對話框佈局容納那些三種語言,它通常並不需要進一步佈局的變化。您可以考慮使用ShowHTMLDialog。如果您可以計算出將數據導入和導出對話框的黑魔法,HTML具有自動縮放以適應文本邊界的控件的優點。

0

在過去,我實現從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(); 
    } 
}