![]() |
Фокус в ComCtrl 6.0
Здравствуйте, товарищи форумщики. Я пишу свою гуишную библиотеку на C++ а-ля Swing. Встала вот такая проблема: при использовании стиля XP (манифестом) иногда не рисуется фокус контролов. Если манифест не подключать (5.0) - всё нормально. Если в результате действий мышкой фокус (6.0) появляется (прорисовывается хоть один раз), то дальше до закрытия окна он прорисовывается нормально. При открытии следующего (popup) окна фокус (уже в нём, не влияя на предыдущее) может пропасть. Я так понял, что проблема возникает при первом появлении окна. Может быть винда как-то помечает контрол, который по её мнению должен иметь фокус, а я ставлю SetFocus на другой?
Вот железный (эмпирический) способ вызвать фокус: если есть ListView хоть с одним элементом, нужно встать на него и понажимать клавиши вверх-вниз. Фокус появляется. |
Короче, эмпирическим путём выяснил, что фокус ставится в Common Control 6.0 при нажатии на клавиш управления контролов (функцией IsDialogMessage). Т.е. если в заново созданном диалоге не было задействовано управление с клавиатуры, то фокус и не отрисовывается. То же самое творится и со стандартными виндозными диалогами.
|
Время: 06:06. |
Время: 06:06.
© OSzone.net 2001-