Здравствуйте, уважаемые знатоки!
У меня возник вопрос.
Имеется диалог с элементом DI_LISTBOX. Кроме того на его площади расположены два элемента: DI_EDIT и DI_BUTTON. В результате клик на этих элементах передаётся листбоксу.
Пдробности.
На событие DN_LISTCHANGE у меня стоит перемещение этих элементов таким образом, чтобы они были в той же строке, что и текущая строка листбокса. Плюс делаю DM_SHOWITEM и DM_SETFOCUS. В результате DI_EDIT работает как надо. НО! Если: (а)не происходит смены строки (повторный клик на Edit-е) либо кликаю на кнопке, то события DN_LISTCHANGE не происходит, а фокус ввода передаётся листбоксу. В результате DI_EDIT и DI_BUTTON "прячутся" под листбоксом. Т.е. на кнопку не нажать никак.
При этом перемещение клавиатурой (Tab) и Enter на кнопке срабатывают нормально; описанная проблема касается только управления мышкой.
Есть ли какая-то возможность "вытащить" элемент управления наверх таким образом, чтобы именно этот элемент получал клик от мышки?
BringToFront для элемента диалога
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
BringToFront для элемента диалога
Возможности видимо нету, но может эту тему надо преподнести как пожелание тогда ?
Типа сделать DialogMessage::BringElementToFront
Думаю что будет ноль реакции, но хотя бы будет порядок
Типа сделать DialogMessage::BringElementToFront
Думаю что будет ноль реакции, но хотя бы будет порядок
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
BringToFront для элемента диалога
На самом деле ничего дополнительно не надо. Есть сообщение DM_SHOWITEM, позволяющее показать/скрыть элемент. При этом если элемент видим, то по DM_SHOWITEM он (элемент) перерисовывается (вызывается DN_DRAWDLGITEM и DN_CTLCOLORDLGITEM). Вот тут и было бы логично сделать его TopMost.