Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Фокус в ComCtrl 6.0 (http://forum.oszone.net/showthread.php?t=65779)

pva 16-05-2006 18:56 438760

Фокус в ComCtrl 6.0
 
Здравствуйте, товарищи форумщики. Я пишу свою гуишную библиотеку на C++ а-ля Swing. Встала вот такая проблема: при использовании стиля XP (манифестом) иногда не рисуется фокус контролов. Если манифест не подключать (5.0) - всё нормально. Если в результате действий мышкой фокус (6.0) появляется (прорисовывается хоть один раз), то дальше до закрытия окна он прорисовывается нормально. При открытии следующего (popup) окна фокус (уже в нём, не влияя на предыдущее) может пропасть. Я так понял, что проблема возникает при первом появлении окна. Может быть винда как-то помечает контрол, который по её мнению должен иметь фокус, а я ставлю SetFocus на другой?
Вот железный (эмпирический) способ вызвать фокус: если есть ListView хоть с одним элементом, нужно встать на него и понажимать клавиши вверх-вниз. Фокус появляется.

pva 25-12-2006 15:36 528936

Короче, эмпирическим путём выяснил, что фокус ставится в Common Control 6.0 при нажатии на клавиш управления контролов (функцией IsDialogMessage). Т.е. если в заново созданном диалоге не было задействовано управление с клавиатуры, то фокус и не отрисовывается. То же самое творится и со стандартными виндозными диалогами.


Время: 06:06.

Время: 06:06.
© OSzone.net 2001-