win32_step_3 - 8BitsCoding/RobotMentor GitHub Wiki


GDI์— ์–ด๋–ค์‹์œผ๋กœ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์•„๋ž˜์‚ฌ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์ž.

์ฐธ๊ณ ์‚ฌ์ดํŠธ


LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg == WM_DESTROY) PostQuitMessage(0);
	else if (uMsg == WM_LBUTTONDOWN) {
		// ์™ผ์ชฝ ๋งˆ์šฐ์Šค ํด๋ฆญ
		HDC h_dc = GetDC(hWnd);

		Rectangle(h_dc, 10, 10, 200, 200);
		ReleaseDC(hWnd, h_dc);
	}

	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

๋งˆ์šฐ์Šค ํด๋ฆญ ์œ„์น˜์— ๊ทธ๋ ค๋ณด์ž.

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg == WM_DESTROY) PostQuitMessage(0);
	else if (uMsg == WM_LBUTTONDOWN) {
		// ์™ผ์ชฝ ๋งˆ์šฐ์Šค ํด๋ฆญ
		HDC h_dc = GetDC(hWnd);

		//int x = lParam & 0x0000FFFF;			// ํ•˜์œ„ 16๋น„ํŠธ ๊ฐ’ ๋ถ„๋ฆฌ
		//int y = (lParam >> 16) & 0x0000FFFF;	// ์ƒ์œ„ 16๋น„ํŠธ ๊ฐ’ ๋ถ„๋ฆฌ
		int x = LOWORD(lParam);
		int y = HIWORD(lParam);
        // GET_X_LPARAM(lParam);
        // ๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ #include <Windowsx.h>๋ฅผ ํ•ด์ค˜์•ผํ•จ.

		Rectangle(h_dc, x - 15, y - 15, x + 15, y + 15);
		ReleaseDC(hWnd, h_dc);
	}

	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

Ctrl์„ ๋ˆ„๋ฅด๋ฉด ์›์ด ๊ทธ๋ ค์ง€๊ฒŒ ๋งŒ๋“ค์–ด๋ณด์ž.

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg == WM_DESTROY) PostQuitMessage(0);
	else if (uMsg == WM_LBUTTONDOWN) {
		// ์™ผ์ชฝ ๋งˆ์šฐ์Šค ํด๋ฆญ
		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);
}
โš ๏ธ **GitHub.com Fallback** โš ๏ธ