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); //!..