win32_step_4 - 8BitsCoding/RobotMentor GitHub Wiki
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_DESTROY) PostQuitMessage(0);
else if (uMsg == WM_MOUSEMOVE) {
if (wParam & MK_LBUTTON) {
HDC h_dc = GetDC(hWnd);
//int x = lParam & 0x0000FFFF; // ํ์ 16๋นํธ ๊ฐ ๋ถ๋ฆฌ
//int y = (lParam >> 16) & 0x0000FFFF; // ์์ 16๋นํธ ๊ฐ ๋ถ๋ฆฌ
int x = LOWORD(lParam);
int y = HIWORD(lParam);
if (MK_CONTROL & wParam) Ellipse(h_dc, x - 15, y - 15, x + 15, y + 15);
else Rectangle(h_dc, x - 15, y - 15, x + 15, y + 15);
ReleaseDC(hWnd, h_dc);
}
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
์ ์ ์ด๋ป๊ฒ ๊ทธ๋ฆฌ๋?
int g_is_clicked = 0;
int g_x = 0, g_y = 0;
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_DESTROY) PostQuitMessage(0);
else if (uMsg == WM_LBUTTONDOWN) {
g_is_clicked = 1;
g_x = GET_X_LPARAM(lParam);
g_y = GET_Y_LPARAM(lParam);
}
else if (uMsg == WM_LBUTTONUP) {
g_is_clicked = 0;
}
else if (uMsg == WM_MOUSEMOVE) {
if (g_is_clicked == 1) {
HDC h_dc = GetDC(hWnd);
MoveToEx(h_dc, g_x, g_y, NULL);
int x = GET_X_LPARAM(lParam);
int y = GET_Y_LPARAM(lParam);
LineTo(h_dc, x, y);
g_x = x;
g_y = y;
ReleaseDC(hWnd, h_dc);
}
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}