Сообщите окнам, на каком мониторе отображать диалоги - PullRequest
5 голосов
/ 24 июня 2011

У меня есть программа, которая использует несколько мониторов.Программа показывает специальные визуализации на втором мониторе.В какой-то момент программа использует функции оболочки Windows для отправки файлов в корзину.Однако, когда это происходит, диалоговое окно подтверждения удаления появляется поверх моей визуализации.Это особенно проблематично, поскольку, когда мышь находится на втором мониторе, моя программа использует ловушки мыши, чтобы захватить весь ввод мыши, поэтому пользователь даже не может щелкнуть диалоговое окно подтверждения.только разместить диалоговые окна на определенном дисплее?

Я использую Python, хотя, если мне нужно вызвать C WinAPI-функций, это не должно быть проблемой

1 Ответ

2 голосов
/ 24 июня 2011

Какую функцию вы используете для отправки файлов в корзину? если вы используете SHFileOperation , вы можете передать родительский HWND. возможно, сделайте это невидимым окном WS_EX_TOOLWINDOW на другом мониторе.

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

В зависимости от того, на какую версию Windows вы нацеливаетесь, раньше была возможность создавать настольные ленты, которые «закрепляются» по краям экрана. это автоматически учитывается в области, возвращаемой как rcWork GetMonitorInfo , и должно предотвращать перекрытие диалоговых окон этим пространством. может быть другим способом объявить, что регион "используется" таким образом, что объявляет пространство недопустимым, но я не знаю об этом, поэтому, вероятно, его не существует ...

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

...