我正在使用像静态文本,复选框等各种控件的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();
}
}