Как вы можете позволить окну в приложении MDI оставить свой родительский контейнер с Win32? - PullRequest
3 голосов
/ 20 марта 2009

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

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

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

1 Ответ

4 голосов
/ 20 марта 2009

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

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

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

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

...