Форум » [x]Harbour » Текущий монитор » Ответить

Текущий монитор

fil: На компе >1 монитора. Как можно узнать номер монитора на котором находится окно моего приложения ?

Ответов - 6

Петр: WinApi функция MonitorFromWindow В исходниках MiniGUI есть файл c_monitor.c, можно портировать, также есть пример использования функций для работы с несколькими мониторами - MiniGUI\SAMPLES\BASIC\Multi_Monitor

fil: Спасибо. Я тут поразбирался с VirtualScreen, примерно понял как мониторы распределяются по общему ректанглу. Теперь надо научиться считывать DC с этих мониторов. Полагаю, что надо делать монитор активным и DetDesctopWindow() Хотя..

Петр: HDC GetWindowDC( [in] HWND hWnd ); Parameters [in] hWnd A handle to the window with a device context that is to be retrieved. If this value is NULL, GetWindowDC retrieves the device context for the entire screen. If this parameter is NULL, GetWindowDC retrieves the device context for the primary display monitor. To get the device context for other display monitors, use the EnumDisplayMonitors and CreateDC functions.


fil: Правильно ли я понял, что EnumDisplayMonitors перечисляет хендлы мониторов и посредством CreateDC() можно считать DC каждого ?

Петр: Так утверждает MS

Петр: И почитайте документацию CreateDC там есть такой интересный момент If there are multiple monitors on the system, calling CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL) will create a DC covering all the monitors. Если такая ситуация Вас устроит, то и EnumDisplayMonitors вроде бы и получается, что не нужен.



полная версия страницы