Ограничение перетаскиваемых дочерних окон в родительском окне?

Пожалуйста, посмотрите на этот скриншот:

введите описание изображения здесь

Как видите, «Исполняемые модули» а также «Потоки» дочерние окна могут свободно бродить в песочнице «Themida» родительское окно, и если они перетаскиваются через край, переполнение просто скрывается. Как я могу создать этот эффект?

1

Решение

Это Многодокументный интерфейс (MDI) приложение. Содержащее окно с темно-серым фоном является окном клиента MDI, а окна внутри являются дочерними окнами MDI.

В течение многих лет Microsoft не поощряла использование MDI, поэтому вы можете подумать дважды об использовании его в новом приложении.

3

Другие решения

Просто установите стиль окна на WS_CHILD, и окно будет ограничено родительским прямоугольником клиента.

Вы можете сделать это во время создания окна или после использования SetWindowLongPtr() а также GetWindowLongPtr():

 SetWindowLongPtr(hwnd, GWL_STYLE, WS_CHILD | GetWindowLongPtr(hwnd, GWL_STYLE));

Постскриптум Вам не нужно создавать приложение MDI, чтобы иметь такое поведение.

1

По вопросам рекламы [email protected]