2010-04-08 64 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(); 
    } 
}