Пишу контрол не видимый во время исполнения с ATL 3.0.
Когда кладу его на форму VB, отображается в виде кнопочки аналогичной, например, стандартному элементу управления Timer.
Да вот проблема: поведение его при перетаскивании по форме мне не нравится. В отличие от привычного поведения, когда при перетаскивании контрола он всегда остается верхним в Z-order, контрол написанный на ATL имеет неприятную привычку — "прятаться" под любой другой контрол.
Т.е. — беру мой контрол мышкой и перетаскиваю его, ну например, на Panel, Frame или другой Composite control. Отпускаю кнопку мышки и мой контрол прячется под Panel или под любой другой контрол. Не помогает даже "Bring to Front"
Как перевоспитать его?
Чтобы избавить от проблемы, нужна хитрая комбинация при создании контрола.
С одной стороны, нужно создавать его как Invisible at runtime, с другой Windowed only.
Если последний атрибут не выбран в мастере создания ATL object wizard, то беду легко поправить добавив в конструктор класса строку
m_bWindowOnly = TRUE;
Re[2]: Invisible at runtime with ATL - визуализация
Здравствуйте VladD2, вы писали:
VD>А стоит ли это делать? Окно ведь ресурсы жрет!
Жрет конечно, но как иначе добиться стандартного поведения контрола?
Уж больно ломает передвигать другие котролы на проектируемой форме чтобы постоянно доставать свой из самого нижнего z-ордера...