Как вы можете позволить окну в приложении MDI оставить свой родительский контейнер с Win32?

У меня есть приложение MDI. Я хотел бы добавить значок в строке заголовка не клиентского окна дочернего окна, которая позволяет окну перемещаться отдельно от родительского контейнера MDI, позволяя пользователю брать дочерние окна и произвольно размещать их вокруг рабочего стола, вне MDI окно.

Я видел, как это было сделано, поэтому я знаю, что это возможно, но мне трудно понять, как это сделать.

Я использую WTL (Windows Template Library), однако я помечаю это с помощью MFC и Win32, так как я считаю, что основные принципы будут одинаковыми, и люди могут иметь знания по всему спектру API Windows.

1 ответ

Прошло много времени с тех пор, как я это сделал, но я думаю, что было достаточно вызвать SetParent (your_hwnd, 0), чтобы позволить окну покинуть родительский объект.

Передача сообщений немного изменится, поэтому вам, возможно, придется перенаправить некоторые сообщения из главного окна в прежнее дочернее окно. Скорее всего, это необходимо, если вы хотите, чтобы главное меню вашего приложения MDI работало с бывшим ребенком.

Если у вас возникают проблемы с рисованием, вам, возможно, придется изменить стиль окна, используя SetWindowLong.

Хороший выбор для использования WTL, кстати, - по моему мнению, очень хорошая абстракция API без каких-либо наворотов.

Другие вопросы по тегам