Отображение дочернего окна на экране, где находится родительское окно

C ++
У меня есть модальное дочернее окно, которое можно запустить из главного окна. Приложение запускается на сервере Citrix, и когда пользователь работает на двух мониторах, он может перетащить дочернее окно на дополнительный дисплей и каким-то образом Windows сохраняет эту позицию. Когда она переходит на рабочую станцию ​​с одним дисплеем, она жалуется, что приложение зависает, когда на самом деле дочернее окно находится за пределами экрана и может быть выведено на главный дисплей с помощью некоторых комбинаций клавиш. Есть ли способ, которым я могу программно заставить дочернее окно всегда открываться на экране, где находится родительское окно?

2

Решение

Вы можете попробовать позвонить CWnd::CenterWindow который просто поместит окно в центр основного монитора (обычно над родительским окном).

2

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

Вы должны переопределить PreCreateWindow и измените соответствующие записи в CREATESTRUCT заставить окно в видимую область. Рекомендации по позиционированию окна можно найти на MSDN («Позиционирование объектов на мониторах с несколькими дисплеями»).

0