C++/win api
[Win api] CreateWindow
๋ณธ๋ฌธ์์๋ ์๋ ํ์ด๋ผ์ดํธ ๋ถ๋ถ์ ์ธ๋ถ์ ์ผ๋ก ๋ค๋ฃฐ ๊ฒ์ด๋ค. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); if (!hWnd) //์๋์ฐ์ฐฝ์ ์์ฑ ๋ชปํ์ ๊ฒฝ์ฐ๋ฅผ ์ํ ์์ธ์ฒ๋ฆฌ๋ฌธ์ด๋ค. { return FALSE; } CreateWindow๋ฅผ ํ๋ฉด ๋ฌด์กฐ๊ฑด ์๋์ฐ ํธ๋ค์ด ๋ง๋ค์ด์ง๋ค. ์ค์ ์๋์ฐ์ฐฝ์ ๋ง๋ค์ด๋ธ๋ค. ์์ฑํ ์๋์ฐ์ ํธ๋ค์ ๋ฐํํด์ค ์ค์ ์ฝ๋ ; HWND hW..
[Win api] InvalidateRect vs updatewindow
1. InvalidateRect ํ๋ฉด์ ๋ฌดํจํํด์ฃผ์ด WM_PAINT ์ ํธ๋ฅผ ๋ณด๋ด๋๋ก ํ๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ invalidateRect๋ WM_PAINT๋ฅผ ์ง์ ํธ์ถํ์ง ์๋๋ค. InvalidateRect ํจ์๋ ๋ฌดํจํ ์์ญ๋ง์ ์ง์ ํด ๋๊ณ ์ด ์์ญ์ ์ฒ๋ฆฌํด ๋ฌ๋ผ๋ ์ ํธ๋ง์ ์ค์ ํ๊ฒ ๋๋ค. ์ด๊ฒ์ WM_PAINT ๋ฉ์ธ์ง์ Flag๋ฅผ ์ค์ ํ๋ ๊ฒ์ด๋ค. ์์คํ ์ด ๋ฉ์์ง ํ์ ์๋ ๋ค๋ฅธ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํด๋์ ๋ค ๋ฌดํจํ ์์ญ์ ์บ์นํ๋ฉด WM_PAINT๋ฅผ ํธ์ถํ๋ค. (๊ฐฑ์ ์์ ์ง์ฐ ์์) 2. updatewindow ๋ฉ์์ง ํ๋ฅผ ๊ฑฐ์น์ง ์๊ณ WM_PAINT๋ฅผ ์ง์ ํธ์ถํ๋ค. (๊ฐฑ์ ์์ ์ง์ฐ ์์)
[Win api] DC์ WM_PAINT, ๊ทธ๋ฆฌ๊ณ BeginPaint() vs GetDC() ๊ดํ ๋น๊ต
1. DC๋, Device Context - ๊ทธ๋ํฝ ์ถ๋ ฅ์ ํ์ํ ๋ชจ๋ ์ต์ ์ ๋ชจ์๋์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ก, ์๋์ฐ์ฆ์์๋ ์ถ๋ ฅ์ฅ์น์ ๋ฌด์์ธ๊ฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ ๋ฐ๋์ DC๊ฐ ํ์ํ๋ค. ๋ณดํต DCํธ๋ค์ ์ป์ ํ ์ถ๋ ฅํ๋ค.(DCํธ๋ค์ ์ถ๋ ฅ๋์์ ๋ํ๋ด๋ ๊ตฌ๋ถ ๋ฒํธ๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.) ๋ชจ๋ ๊ทธ๋ํฝ ํจ์๋ค์ ์ฒซ๋ฒ์งธ ์ธ์๋ก DCํธ๋ค์ ํ์๋ก ํ๋ค. - GDI์ ์ํด ๊ด๋ฆฌ๋๋ค. (GDI๋ ๊ทธ๋ํฝ ํจ์๋ค์ ๊ตฌํํ๋ ์ผ์ ๋ด๋นํ๋ ์๋์ฐ์ฆ์ ๊ตฌ์ฑ์์์ด๋ค. ๊ทธ๋ํฝ ์ถ๋ ฅ์ ์ํ์ฌ ์์ฉํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ ์ ์๋ ํจ์์ ๊ทธ์ ๊ด๋ จ๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค.) - ์ฆ, ํฐํธ/์์/๊ตต๊ธฐ/์ถ๋ ฅ๋ฐฉ๋ฒ๋ฑ์ด ๋ชจ๋ ์ถ๋ ฅ์ ํ์ํ ์ ๋ณด์ด๋ฏ๋ก ๊ทธ๋ฌํ ์ ๋ณด๋ค์ด DC์ ๋ค ๋ด๊ฒจ ์๋ค๊ณ ๋ณผ ์ ์๋ค. ๊ด๋ จ ์ฝ๋: hdc = GetDC(hWnd); //!..