2010-04-08 3 views
0

Я работаю над диалоговыми окнами Win32 с различными элементами управления, такими как Static Text, Checkbox и т. Д., И все строки должны быть локализованы для разных языков. Я разработал диалоговые окна для интерьеров США. Но когда я помещаю локализованные строки в те, которые не подходят должным образом, и мне приходится менять макет для каждого интерфейса.Как локализовать диалоги win32?

Есть ли лучший способ сделать это?

Могу ли я создать один диалог с одним макетом, который должен работать со всеми Intsl ???

ответ

1

Я помню, как где-то читал, что во время первоначальной компоновки ресурсов GUI в MS они создают диалоги на немецком языке, а затем дважды проверяют макеты по-английски и на японском.

Как только макет диалога вмещает эти три языка, он, как правило, не требует дополнительных изменений компоновки.

Вы можете использовать ShowHTMLDialog. Если вы можете разработать черную магию получения данных в диалоговом окне и из него, у него есть преимущество элементов управления, которые автоматически масштабируются для соответствия их текстовым границам.

0

В прошлом я реализовал следующий производный класс от CDialog под названием CLanguageDialog. Затем я позвонил loadLanguage() в OnInitdialog(). Тогда все мои диалоги в моем приложении будут получены от CLanguageDialog вместо CDialog.

void CLanguageDialog::loadLanguage() 
{ 
    CWnd *pChild = this->FindWindowEx(this->m_hWnd, NULL, NULL, NULL); 

    while(pChild) 
    { 
     theApp.languageLoader.loadStringForWnd(pChild); 
     pChild = pChild->GetNextWindow(); 
    } 
} 
Смежные вопросы