Win32 API with 나우캠퍼스
Win32 API 11강. 유용한 함수(3) 충돌 함수
코다람쥐
2022. 8. 20. 16:39
3. 충돌 함수
PtInRect()
▩ 역할
- 지정한 위치가 사각형 안에 포함 되었는지를 판별
▩ 함수 원형
BOOL PtInRect(
[in] const RECT *lprc,
[in] POINT pt
);
*lprc : Rect 구조체 주소
pt : PT형 구조체(마우스를 다루는 구조체이다.)
포함 : 0 이외의 값 리턴
미포함 : 0 리턴
사용예시. WinProc
case WM_LBUTTONDOWN:
pt.x = LOWORD(lParam);
pt.y = HIWORD(lParam);
InvalidateRect(hWnd, NULL, TRUE);
break;
case WM_PAINT:
{
static POINT pt;
RECT rect = { 30, 30, 130, 130 };
static char string[100];
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
HDC hMemDC;
HBITMAP hBitmap;
HPEN hPen;
if(PtInRect(&rect, pt) != 0)
sprintf_s(string, "포함 됨");
else
sprintf_s(string, "포함 안됨");
TextOut(hdc, 0, 0, string, strlen(string));
hPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
SelectObject(hdc, hPen);
Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom);
DeleteObject(hPen);
EndPaint(hWnd, &ps);
}
break;
사각형 내부를 마우스로 누르면 '포함 됨'으로 바뀐다.
IntersectRect()
▩ 역할
- 두 개의 사각형의 교차를 판별
▩ 함수 원형
BOOL IntersectRect(
[out] LPRECT lprcDst,
[in] const RECT *lprcSrc1,
[in] const RECT *lprcSrc2
);
lprcDst : 교차된 영역의 사각형을 저장할 구조체3. NULL을 넣으면 안됨!
*lprcSrc1 : 교차되었는지 판별할 RECT구조체 1
*lprcSrc2 : 교차되었는지 판별할 RECT구조체 2
교차 : 0 이외의 값 리턴
미교차 : 0 리턴