![]() |
|
![]() ![]() ![]() |
|
Diego2la |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.3.2012 Репутация: нет Всего: нет |
Возникла необходимость вытащить контрол за пределы родительской формы. Это уже реализовано во многих программах, к примеру, в VS можно таскать Solution Explorer по всему экрану. Одним словом нужно найти способ перетащить контрол в любую часть экрана, при этом оставив обработчиков на родителе.
Есть ли в MFC способы решения этой задачи. Возможно уже что-то написано на эту тему. Благодарен за помощь. Дмитрий. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Если контрол == дочернее окно (т.е. WS_CHILD), то ни при каких условиях оно не может вылезти за пределы родительского. Но в WinAPI есть еще понятие Owner-окна, правда довольно мутное (на мой взгляд). Но делу это особо не помогает, т.к. стандартного механизма нотификации Owner'а нет, каждый извращается на свой лад. Солюшен-эксплорер, тобой упомянутый - это не один контрол, а кучка окон одно в другом. Если не ошибаюсь, при перетаскивании контрол меняет парента, помещаясь в специальный плавающий попап.
Что касается местоположения обработчиков сообщений, то в MFC все команды от панелей приходят обычно к главному фрейму (если панели принадлежат ему; в принципе, панели можно присобачить и к дочернему фрейму, но так обычно не делают). А вот из главного окна команда идет по стандартному dispatch-пути (вид, документ, etc). Под командой в данном случае подразумеваются извещения WM_COMMAND, WM_COMMAND типа update и WM_NOTIFY. И вроде что-то еще, но я IRL этого не встречала (возможно, для какого-нибудь OLE). Все остальное нужно пересылать руками, никто не мешает - хоть полный состав windows-сообщений. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |