Странности с 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; }