Как вы можете позволить окну в приложении MDI оставить свой родительский контейнер с Win32?
У меня есть приложение MDI. Я хотел бы добавить значок в строке заголовка не клиентского окна дочернего окна, которая позволяет окну перемещаться отдельно от родительского контейнера MDI, позволяя пользователю брать дочерние окна и произвольно размещать их вокруг рабочего стола, вне MDI окно.
Я видел, как это было сделано, поэтому я знаю, что это возможно, но мне трудно понять, как это сделать.
Я использую WTL (Windows Template Library), однако я помечаю это с помощью MFC и Win32, так как я считаю, что основные принципы будут одинаковыми, и люди могут иметь знания по всему спектру API Windows.
1 ответ
Прошло много времени с тех пор, как я это сделал, но я думаю, что было достаточно вызвать SetParent (your_hwnd, 0), чтобы позволить окну покинуть родительский объект.
Передача сообщений немного изменится, поэтому вам, возможно, придется перенаправить некоторые сообщения из главного окна в прежнее дочернее окно. Скорее всего, это необходимо, если вы хотите, чтобы главное меню вашего приложения MDI работало с бывшим ребенком.
Если у вас возникают проблемы с рисованием, вам, возможно, придется изменить стиль окна, используя SetWindowLong.
Хороший выбор для использования WTL, кстати, - по моему мнению, очень хорошая абстракция API без каких-либо наворотов.