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);
}