구리의 창고

다른 모니터로 마우스 좌표 보내기 (WDK) 본문

Window Driver

다른 모니터로 마우스 좌표 보내기 (WDK)

구리z 2010. 4. 9. 15:39

모니터 좌표는 주모니터를 기준으로 한다.

image

다음과 같이 모니터가 4개 설치됐다고 가정하자 (1번모니터가 주모니터이다)

주모니터(1번) 왼쪽 끝은 0,0 좌표를 가진다.

그리고 2번모니터의 좌표는 1번모니터의 가로길이부터 시작한다.

만약 주모니터의 왼쪽이나 위쪽에 있다면 좌표는 마이너스 값을 가지게된다.

 

각 모니터의 좌표를 얻어온 후, 드라이버 단에서 처리를 해줘야한다.

mouclass에 mouse event 를 보내 줄 때, x y 값은 가로세로 최대 0xFFFF 0xFFFF 값을 가진다.

설명을 쉽게 하기 위해 소스를 예로 들겠다.

typedef struct
{
  LONG Top;
  LONG Bottom;
  LONG Left;
  LONG Right;
} RECT;
...
중략
...
RECT monPrimaryInfo;
RECT monInfo;
..
모니터 좌표 저장
..
x = 0xFFFF * monInfo.Left / (monPrimaryInfo.Right - monPrimaryInfo.Left) ;
y = 0xFFFF * monInfo.Top / (monPrimaryInfo.Bottom - monPrimaryInfo.Top) ;

 

 

monInfo 에 마우스 좌표를 보내고 싶은 모니터 정보, monPrimaryInfo에 주모니터 정보가 저장 돼 있다.

위 같은 공식으로 적당히 계산을 해서 값을 넣어주면 된다.

 

출처: 나

Comments