LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static BOOL isDown = FALSE;
static int oldx;
static int oldy;
switch (iMessage)
{
case WM_LBUTTONDOWN:
oldx = LOWORD(lParam);
oldy = HIWORD(lParam);
isDown = TRUE;
return 0;
case WM_LBUTTONUP:
isDown = FALSE;
return 0;
case WM_MOUSEMOVE:
if(isDown == TRUE)
{
hdc = GetDC(hWnd);
MoveTo!Ex(hdc,oldx,oldy,NULL);
oldx = LOWORD(lParam);
oldy = HIWORD(lParam);
LineTo(hdc,oldx,oldy);
ReleaseDC(hWnd,hdc);
}
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
별것 없다. 마우스로 드로잉 하는 예제
우선 WM_LBUTTONDOWN 메세지가 호출되면 oldx,oldy에 좌표가 저장되고, WM_MOUSEMOVE메세지에서 마우스가 움직일때마다 좌표를 읽는다. 그래서 oldx,oldy에서 마우스 위치까지 선을 그려내면 된다.