선언:

C#

 [DllImport("user32")]
public static extern Int32 MapWindowPoints(IntPtr hWndFrom, IntPtr hWndTo, ref POINT pts, Int32 cPoints);


VB.NET

<DllImport("user32")> _
Public Shared Function MapWindowPoints(hWndFrom As IntPtr, hWndTo As IntPtr, ByRef pts As POINT, cPoints As Int32) As Int32
End Function




사용 예제:

11. ChildWindowFromPoint




매개 변수 설명:

hWndFrom- 이 값이 Null 혹은 HWND_DESKTOP 으로 지정될 경우, 주어진 점은 화면 좌표계로 처리됩니다.

hWndTo - 이 값이 Null 혹은 HWND_DESKTOP 으로 지정될 경우, 주어진 점은 화면 좌표계로 변환되어 처리됩니다.

pts - 변환할 점을 입력합니다.

cPoints - 변환할 점의 갯수를 입력합니다.




API 설명:

주어진 점을 화면/클라이언트 좌표계에 맞게끔 변환합니다.




참고:

MapWindowPoints (MSDN)




비고:

주어진 점을 화면/클라이언트 좌표계에 맞게끔 변환합니다.


위의 그림에서 회색 배경은 바탕 화면, 녹색/연녹색으로 표시된 부분은 윈도우 창이라고 가정할 때

화면 좌표계로 나타낸 점 A (100, 150)는 클라이언트 좌표계(윈도우)로 나타낸다면 (0, 150) 이 되겠고,

화면 좌표계로 나타낸 점 B (150, 120)는 클라이언트 좌표계(윈도우)로 나타내면 (50, 20) 이 됩니다.


이는 클라이언트의 왼쪽 상단을 기준점 (0, 0)으로 삼기 때문에 화면 좌표계에서 윈도우의 위치 (100, 100)를 뺀 값이

클라이언트 좌표계가 됩니다.


* pts 매개 변수에 여러 개의 인수를 전달해보려고 시도했지만.. 전달은 되는데 결과가 이상하게 나오네요.

(저는 Marshal 클래스로 IntPtr 할당한 후에 거기다가 값을 넣었는데.. 다른 방법은 되는지 궁금하네요)

배열로도 시도해보았으나.. 안되는데.. 아시는 분 제보 부탁드려요!


'API Reference' 카테고리의 다른 글

14. SetCursorPos  (0) 2014.09.25
13. GetCursorPos  (0) 2014.09.23
11. ChildWindowFromPoint  (0) 2014.09.20
10. WindowFromPoint  (0) 2014.09.19
9. Process32First, Process32Next  (0) 2014.09.18

+ Recent posts