Странности с dropdown-окном в wxComboBox/wxChoice в Windows Mobile |
После долгого перерыва решил снова заняться разработкой для Windows Mobile - доработать программу-переводчик, использующую Google Translate. В программе используется wxChoice cо списком языков. Так как поддерживаемых языков довольно много, то общая высота списка wxChoice получается много больше чем высота экрана КПК. В результате получаем что-то подобное:
После долгих поисков на форуме wxWidgets понял что с этой проблемой уже сталкивались неоднократно другие разработчики, но решения рабочего явно не было.
Перепробовав разные комбинации SetSize()/SetInitialSize()/SetMinSize()/SetMaxSize() нашел вот какое решение:
Если установить размер клиентской области для wxChoice после появления окна, то изменения применяются и получаем нормальный размер выпадающего списка. Если это делать при создании формы, то изменения не применяются.
bool wxGoogleTranslateClientApp::OnInit()
{
wxGoogleTranslateClientMainFrame* mainWindow = new wxGoogleTranslateClientMainFrame( NULL );
mainWindow->Show(true);
// Очень плохое решение, но только оно и работает
mainWindow->m_SourceLanguageChoice->SetClientSize(
mainWindow->m_SourceLanguageChoice->GetClientSize().GetWidth(), 120);
mainWindow->m_ResultLanguageChoice->SetClientSize(
mainWindow->m_ResultLanguageChoice->GetClientSize().GetWidth(), 120);
return true;
}
В результате получаем вот такой результат:

| Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |