win32_step_13 - 8BitsCoding/RobotMentor GitHub Wiki


#define MAX_COUNT 3
int g_index[MAX_COUNT] = { 0, };

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg == WM_PAINT) {
		PAINTSTRUCT ps;
		HDC h_dc = BeginPaint(hWnd, &ps);
		HGDIOBJ h_old_brush;
		int table[2] = { WHITE_BRUSH, BLACK_BRUSH };

		for (int i = 0; i < MAX_COUNT; i++) {
			/*
			if (g_index[i] == 1) h_old_brush = SelectObject(h_dc, GetStockObject(BLACK_BRUSH));
			Rectangle(h_dc, 0 + i * 100, 0, 101 + i * 100, 100);
			if (g_index[i] == 1) SelectObject(h_dc, h_old_brush);
			*/

			// μ½”λ“œ 간단화
			SelectObject(h_dc, GetStockObject(table[g_index[i]]));
			Rectangle(h_dc, i * 100, 0, 101 + i * 100, 100);
		}

		EndPaint(hWnd, &ps);
		return 0;
	}
	else if (uMsg == WM_LBUTTONDOWN) {
		UINT x = LOWORD(lParam);
		UINT y = HIWORD(lParam);

		/*
		if (x >= 0 && x < 100 && y >= 0 && y < 100) g_index = 0;
		else if (x >= 100 && x < 200 && y >= 0 && y < 100) g_index = 1;
		else if (x >= 200 && x < 300 && y >= 0 && y < 100) g_index = 2;
		InvalidateRect(hWnd, NULL, TRUE);
		*/

		// μ½”λ“œ 간단화 - 1
		/*
		if (y >= 0 && y < 100) {
			if (x >= 0 && x < 100) g_index = 0;
			else if (x < 200) g_index = 1;
			else if (x < 300) g_index = 2;
		}
		InvalidateRect(hWnd, NULL, TRUE);
		*/

		// μ½”λ“œ 간단화 - 2
		/*
		if (y >= 0 && y < 100) {
			for (UINT i = 0; i < MAX_COUNT; i++) {
				if (x < (i + 1) * 100) {
					g_index[i] = !g_index[i];
					InvalidateRect(hWnd, NULL, TRUE);
					break;
				}
			}
		}
		*/

		// μ½”λ“œ 간단화 - 3
		if (y >= 0 && y < 100) {
			UINT index = x / 100;
			if (index < MAX_COUNT) {
				g_index[index] = !g_index[index];
				InvalidateRect(hWnd, NULL, TRUE);
			}
		}
	}
	else if (uMsg == WM_DESTROY) PostQuitMessage(0);

	
	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
⚠️ **GitHub.com Fallback** ⚠️