BringToFront для элемента диалога

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
buniak_a_h
Posts: 3185
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 167 times
Been thanked: 467 times
Contact:

BringToFront для элемента диалога

Post by buniak_a_h »

Здравствуйте, уважаемые знатоки!
У меня возник вопрос.
Имеется диалог с элементом DI_LISTBOX. Кроме того на его площади расположены два элемента: DI_EDIT и DI_BUTTON. В результате клик на этих элементах передаётся листбоксу.
Пдробности.
На событие DN_LISTCHANGE у меня стоит перемещение этих элементов таким образом, чтобы они были в той же строке, что и текущая строка листбокса. Плюс делаю DM_SHOWITEM и DM_SETFOCUS. В результате DI_EDIT работает как надо. НО! Если: (а)не происходит смены строки (повторный клик на Edit-е) либо кликаю на кнопке, то события DN_LISTCHANGE не происходит, а фокус ввода передаётся листбоксу. В результате DI_EDIT и DI_BUTTON "прячутся" под листбоксом. Т.е. на кнопку не нажать никак.
При этом перемещение клавиатурой (Tab) и Enter на кнопке срабатывают нормально; описанная проблема касается только управления мышкой.
Есть ли какая-то возможность "вытащить" элемент управления наверх таким образом, чтобы именно этот элемент получал клик от мышки?
User avatar
citRiks
Posts: 1604
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 495 times
Been thanked: 95 times

BringToFront для элемента диалога

Post by citRiks »

Возможности видимо нету, но может эту тему надо преподнести как пожелание тогда ?
Типа сделать DialogMessage::BringElementToFront
Думаю что будет ноль реакции, но хотя бы будет порядок :)
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 3185
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 167 times
Been thanked: 467 times
Contact:

BringToFront для элемента диалога

Post by buniak_a_h »

citRiks wrote: Mon 27 Sep, 2021 18:00 Типа сделать DialogMessage::BringElementToFront
На самом деле ничего дополнительно не надо. Есть сообщение DM_SHOWITEM, позволяющее показать/скрыть элемент. При этом если элемент видим, то по DM_SHOWITEM он (элемент) перерисовывается (вызывается DN_DRAWDLGITEM и DN_CTLCOLORDLGITEM). Вот тут и было бы логично сделать его TopMost.
Post Reply

Return to “Нужна помощь”