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