WAYFARER писал(а):Короче, данные/файлы/сеть/БД/etc - onCreate, все что затрагивает UI - onShow (или отложенный вызов сразу после onCreate если форма может быть невидимой).
Впрочем, я и сам много лет использовал эти события неправильно, потому что начинал с Delphi в Windows и меня так научили)).
нет естественно, дельфи под винду все правильно учила, в OnShow ни в коем случае нельзя делать то что меняет видимость элементов UI, потому что контракт - в OnShow нельзя делать OnShow, ибо это потенциальная рекурсия.
если есть проблемы в OnCreate это либо проблема в реализации контролов, либо вы забыли вызвать HandleNeeded, спец метод когда нужен хендел, они не стали пихать его куда нибудь типа в GetHandle, по естественным причинам - это неправильно.
Добавлено спустя 6 минут 4 секунды:на практике, HandleNeeded понадобился один раз, в остальных случая просто делал что то не так, и переписал, с матами, кучу OnShow, написанных другими, на OnCreate и близкие типа RestoreState, исправляя глюки.
Добавлено спустя 9 минут 55 секунд:Сквозняк писал(а):Если при старте окна нужно поменять его заглавие в шапке, то это может вызвать ошибку, а значит нужно писать код, который будет считать отклики от формы.
это явный косяк компонентов, в вин32 стратегия следующая, при присваивании заглавия, текст присваивается внутренней переменной, а потом, когда для формы создается HWND, оно берется из нее, если уже есть HWND то пишется и в него и в переменную, естественно аналогично должно быть и для гтк3 контролов, и тут нет вообще места каким то ошибкам.