определить, находится ли расширенный рабочий стол слева или справа - PullRequest
0 голосов
/ 20 апреля 2010

Итак, у меня есть утилита захвата экрана (она снимает весь экран и сохраняет ее в png-файлах), которую я написал, и она использует SM_CXVIRTUALSCREEN и SM_CYVIRTUALSCREEN для определения ширины и высоты рабочего стола. 1003 *

Затем я получаю DC рабочего стола, копирую биты и сохраняю их как png.

    BitBlt(
      backDC, 0, 0,
      backBufferCX, backBufferCX,
      desktopDC, X_SRC, 0, SRCCOPY );

Здесь X_SRC обычно равно 0, ЕСЛИ БЕЗ СТОЛБА НЕ РАСПРОСТРАНЕНО "ВЛЕВО". В этом случае он должен быть -1280px, например, если левый монитор измеряет 1280px.

Как определить, является ли начальная точка рабочего стола отрицательной (если пользователь расширил свой рабочий стол влево?)

Ответы [ 2 ]

2 голосов
/ 20 апреля 2010

Вы можете получить информацию о местоположении для всех мониторов с помощью метода EnumDisplayMonitors .

Или, если вам нужны только углы виртуального экрана, вы можете передать SM_XVIRTUALSCREEN и SM_YVIRTUALSCREEN в метод GetSystemMetrics.

1 голос
/ 20 апреля 2010

Вы должны использовать GetSystemMetrics(SM_XVIRTUALSCREEN), GetSystemMetrics(SM_YVIRTUALSCREEN) в качестве координат x, y для BitBlt

...