본문 바로가기
::public/윈도우즈 응용 프로그래밍

윈도우 좌표 구성

by 해맑은욱 2019. 9. 23.

*GetWindowRect

;윈도우 영역의 좌표를 얻는 함수.

// RECT 구조체.
typedef struct tagRECT
{
   LONG    left;   // 왼쪽 상단 x
   LONG    top;    // 왼쪽 상단 y
   LONG    right;  // 오른쪽 하단 x
   LONG    bottom; // 오른쪽 하단 y
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
 
// 윈도우 영역에 대한 좌표 구하기.
LPRECT rect = NULL;
GetWindowRect(hWnd, rect);
cs

*GetClientRect

;현재 윈도우의 클라이언트 영역의 좌표를 얻는 함수. 개별 윈도우를 위한 상대적인 좌표계.

 상단 캡션(타이틀바)을 제외한 영역.

// 현재 윈도우의 클라이언트 영역 좌표 구하기.
// 클라이언트 좌표계는 (left, top)이 항상 (0, 0)이다.
LPRECT rect = NULL;
GetClientRect(hWnd, rect);
cs

 

[참고] https://blog.naver.com/tipsware/220974096116

 

윈도우 좌표 구성에 대하여

windows 운영체제에서 Window는 다른 Window를 포함(소유) 할 수 있기 때문에 '절대적인 좌표'와 '상대적...

blog.naver.com

*마우스 클릭한 위치에 사각형 그리기

// 사용자가 메시지를 처리하는 함수.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC h_dc = ::GetDC(hWnd);
    int x, y;
 
    switch (message)
    {
    case WM_LBUTTONDOWN:
        // 마우스 클릭한 위치에 사각형 그리기.
        x = LOWORD(lParam);    // 하위 16비트 값 분리.
        y = HIWORD(lParam);    // 상위 16비트 값 분리.
        Rectangle(h_dc, x, y, x + 100, y + 100);
        ReleaseDC(hWnd, h_dc);
        break;
    case WM_DESTROY:
        // 프로그램 종료
        PostQuitMessage(0);
        break;
    default:
        // 자신이 처리하지 않는 메시지들의 기본 작업을 대신 처리해주는 함수.
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
cs

'::public > 윈도우즈 응용 프로그래밍' 카테고리의 다른 글

Bitmap 복사  (0) 2019.09.24
WinProc(윈드 프록)  (0) 2019.09.23
GDI(Graphics Device Interface)  (0) 2019.09.23
CreateBitmap / CreateCompatibleBitmap  (0) 2019.09.23
Windows API  (0) 2019.09.23