win32_step_10 - 8BitsCoding/RobotMentor GitHub Wiki
- ์์ค์ฝ๋
- ์ ํฌ๋ถ
- GetStockObject์ ๋ํด์
- CreateSolidBrush์ ๋ํด์
- CreateHatchBrush์ ๋ํด์
GetStockObject : ์์ฃผ์ฌ์ฉํ๋ Object์ ๋ํด์๋ Windows์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ค.
CreateSolidBrush, CreateHatchBrush : ๋ด๊ฐ ๋ง๋๋ Object
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);
HGDIOBJ h_old_brush = SelectObject(h_dc, GetStockObject(GRAY_BRUSH));
Rectangle(h_dc, 20, 20, 80, 80);
SelectObject(h_dc, GetStockObject(NULL_BRUSH));
Rectangle(h_dc, 60, 60, 120, 120);
SelectObject(h_dc, h_old_brush);
ReleaseDC(hWnd, h_dc);
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
HDC h_dc = GetDC(hWnd);
HBRUSH h_blue_brush = CreateSolidBrush(RGB(0, 0, 255));
HGDIOBJ h_old_brush = SelectObject(h_dc, h_blue_brush);
HPEN h_null_pen = CreatePen(PS_NULL, 0, RGB(0, 0, 0));
HGDIOBJ h_old_pen = SelectObject(h_dc, h_null_pen);
Rectangle(h_dc, 10, 10, 100, 100);
SelectObject(h_dc, h_old_brush);
SelectObject(h_dc, h_old_pen);
DeleteObject(h_blue_brush);
DeleteObject(h_null_pen);
ReleaseDC(hWnd, h_dc);
์ฐธ๊ณ ๋ก FillRect ํจ์๋ฅผ ์ฐ๋ฉด ๋ ๊ฐ๋จํ๊ฒ ๊ตฌํ์ด ๋จ.(ํํ์ด์ง ์ฐธ์กฐ)
HDC h_dc = GetDC(hWnd);
HBRUSH h_blue_brush = CreateSolidBrush(RGB(0, 0, 255));
RECT r = {10, 10, 100, 100};
FillRect(h_dc, &r, h_blue,brush);
DeleteObject(h_blue_brush);
ReleaseDC(hWnd, h_dc);
HDC h_dc = GetDC(hWnd);
HBRUSH h_brush;
// Brush์ ์์ฑ์ ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉํ Brush ๊ฐ์ฒด์์ ์ฌ์ฉ๊ฐ๋ฅํ ์์ฑ ๋ช
์นญ์ ์ง์ ํ๋ค.
const char *p_style_string[6] = { "HS_BDIAGONAL", "HS_CROSS", "HS_DIAGCROSS", "HS_FDIAGONAL", "HS_HORIZONTAL", "HS_VERTICAL" };
// Brush์ ์์ฑ์ ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉํ Brush ๊ฐ์ฒด์ ์์ฑ ์ธ์ ๊ฐ๋ค์ ์ง์ ํ๋ค.
int brush_style[6] = { HS_BDIAGONAL, HS_CROSS, HS_DIAGCROSS, HS_FDIAGONAL, HS_HORIZONTAL, HS_VERTICAL };
// ์ ์ ๊ฒฝ์ฐ ํ์๋์ง ์๋ ๋ถ๋ถ์ ์์์ด ๋ฐฐ๊ฒฝ์์ผ๋ก ์ถ๋ ฅ๋์ง ์๋๋ก ๋ฐฐ๊ฒฝ์์ ํฌ๋ช
ํ๊ฒ ํ๋ ์ต์
์ ์ค์ ํ๋ค.
SetBkMode(h_dc, TRANSPARENT);
// ํ์ฌ DC์ ์ค์ ๋ Brush ํธ๋ค ๊ฐ์ ์ป๋๋ค.
HGDIOBJ h_old_brush = GetCurrentObject(h_dc, OBJ_BRUSH);
// ์์์ ์ง์ ํ 6๊ฐ์ง์ ์์ฑ๋ณ๋ก ์ฌ๊ฐํ์ ๊ทธ๋ฆฐ๋ค.
for (int i = 0; i < 6; i++) {
// Brush์ ์์ฑ๋ณ ๋ช
์นญ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
TextOutA(h_dc, 10, 10 + i * 30, p_style_string[i], strlen(p_style_string[i]));
// ์ ์ฅํ Brush์ ์์ฑ๊ฐ์ผ๋ก ํ๋์ Brush ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
h_brush = CreateHatchBrush(brush_style[i], RGB(0, 0, 255));
// DC์ ์์ฑํ Brush ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ๋ค.
SelectObject(h_dc, h_brush);
Rectangle(h_dc, 200, 5 + i * 30, 400, 30 + i * 30); // ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
// ์ฌ์ฉ์ด ๋๋ Brush ๊ฐ์ฒด๋ ์ ๊ฑฐํ๋ค.
DeleteObject(h_brush);
}
// ๊ธฐ์กด์ ์ฌ์ฉํ๋ Brush ๊ฐ์ฒด๋ก ๋ณต๊ตฌํ๋ค.
SelectObject(h_dc, h_old_brush);