선언:
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
사용 예제:
매개 변수 설명:
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 |