๋ณธ๋ฌธ์์๋ ์๋ ํ์ด๋ผ์ดํธ ๋ถ๋ถ์ ์ธ๋ถ์ ์ผ๋ก ๋ค๋ฃฐ ๊ฒ์ด๋ค.
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 hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
๊ฐ ์ธ์์ ์๋ฏธ: HWND CreateWindow(lpszClassName, lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, hmenu, hinst, lpvParam)
1 lpszClassName
์์ฑํ๊ณ ์ ํ๋ ์๋์ฐ์ ํด๋์ค๋ฅผ ์ง์ ํ๋ ๋ฌธ์์ด์ด๋ค. ์์์ ์ ์ํ WndClass๊ตฌ์กฐ์ฒด์ lpszClassName ๋ฉค๋ฒ์ ์ด๋ฆ์ ์ฌ๊ธฐ์ ๊ธฐ์
ํด ์ค๋ค.
2 lpszWindowName
์๋์ฐ์ ํ์ดํ ๋ฐ์ ๋ํ๋ ๋ฌธ์์ด์ด๋ค. ์ฌ๊ธฐ์ ์ง์ ํ ๋ฌธ์์ด์ด ์๋์ฐ์ ํ์ดํ ๋ฐ์ ๋ํ๋๋ค.
3 dwStyle
๋ง๋ค๊ณ ์ ํ๋ ์๋์ฐ์ ํํ๋ฅผ ์ง์ ํ๋ ์ธ์์ด๋ค. ์ผ์ข
์ ๋นํธ ํ๋๊ฐ์ด๋ฉฐ ๊ฑฐ์ ์์ญ๊ฐ๋ฅผ ํค์๋ฆฌ๋ ๋งคํฌ๋ก ์์๋ค์ด ์ ์๋์ด ์๊ณ ์ด ์์๋ค์ OR์ฐ์ฐ์๋ก ์ฐ๊ฒฐํ์ฌ ์๋์ฐ์ ๋ค์ํ ํํ๋ฅผ ์ง์ ํ๋ค.
์๋์ฐ๊ฐ ๊ฒฝ๊ณ์ ์ ๊ฐ์ง ๊ฒ์ธ๊ฐ, ํ์ดํ ๋ฐ๋ฅผ ๊ฐ์ง ๊ฒ์ธ๊ฐ ๋๋ ์คํฌ๋กค ๋ฐ์ ์ ๋ฌด ๋ฑ๋ฑ์ ์ธ์ธํ๊ฒ ์ง์ ํด ์ค ์ ์๋ค. ๊ฐ๋ฅํ ์คํ์ผ๊ฐ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ์กฐํ๋ WS_OVERLAPPEDWINDOW๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฅ ๋ฌด๋ํ ์๋์ฐ ์ค์ ์ํ๊ฐ ๋๋ค. ์ฆ ์์คํ
๋ฉ๋ด, ์ต๋ ์ต์ ๋ฒํผ, ํ์ดํ ๋ฐ, ๊ฒฝ๊ณ์ ์ ๊ฐ์ง ์๋์ฐ๋ฅผ ๋ง๋ค์ด ์ค๋ค.
4 X, Y, nWidth, nHeight
์ธ์์ ์ด๋ฆ์ด ์๋ฏธํ๋ฏ์ด ์๋์ฐ์ ์์น์ ๊ฐ๋ก ๋ฐ ์ธ๋ก๋ฅผ ์ง์ ํ๋ฉฐ ํฝ์
๋จ์๋ฅผ ์ฌ์ฉํ๋ค. x, y์ขํ๋ ๋ฉ์ธ ์๋์ฐ์ ๊ฒฝ์ฐ๋ ์ ์ฒด ํ๋ฉด์ ๊ธฐ์ค์ผ๋ก ํ๋ฉฐ ์ฐจ์ผ๋ ์๋์ฐ๋ ๋ถ๋ชจ ์๋์ฐ์ ์ข์๋จ์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ์ ์๊ฐ์ ๋ฐ๋ก ์ง์ ํด๋ ๋๋ฉฐ CW_USEDEFAULT๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ฐ์ฆ๊ฐ ์์์ ์ ๋นํ ํฌ๊ธฐ์ ์์น๋ฅผ ์ค์ ํด ์ค๋ค.
5 hWndParent
๋ถ๋ชจ ์๋์ฐ๊ฐ ์์ ๊ฒฝ์ฐ ๋ถ๋ชจ ์๋์ฐ์ ํธ๋ค์ ์ง์ ํด ์ค๋ค. ํ์
์๋์ฐ๋ ์๋์ฐ๋ผ๋ฆฌ ์์ง์ ์ธ ์ํ๊ด๊ณ๋ฅผ ๊ฐ์ ธ ๋ถ์(parent-child) ๊ด๊ณ๊ฐ ์ฑ๋ฆฝ๋๋๋ฐ ์ด ๊ด๊ณ๋ฅผ ์ง์ ํด ์ฃผ๋ ์ธ์์ด๋ค.
๋ถ๋ชจ ์๋์ฐ๊ฐ ์์ ๊ฒฝ์ฐ๋ ์ด ๊ฐ์ NULL๋ก ์ง์ ํ๋ฉด ๋๋ค.
6 hmenu
์๋์ฐ์์ ์ฌ์ฉํ ๋ฉ๋ด์ ํธ๋ค์ ์ง์ ํ๋ค. WndClass์๋ ๋ฉ๋ด๋ฅผ ์ง์ ํ๋ ๋ฉค๋ฒ๊ฐ ์๋๋ฐ ์๋์ฐ ํด๋์ค์ ๋ฉ๋ด๋ ๊ทธ ์๋์ฐ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ชจ๋ ์๋์ฐ์์ ์ฌ์ฉ๋๋ ๋ฐ๋ฉด ์ด ์ธ์๋ก ์ง์ ๋ ๋ฉ๋ด๋ ํ์ฌ CreateWindow ํจ์๋ก ๋ง๋ค์ด์ง๋ ์๋์ฐ์์๋ง ์ฌ์ฉ๋๋ค. ๋ง์ฝ WndClass์์ ์ง์ ํ ๋ฉ๋ด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ด ์ธ์๋ฅผ NULL๋ก ์ง์ ํ๋ฉด ๋๋ฉฐ WndClass์์ ์ง์ ํ ๋ฉ๋ด ๋์ ๋ค๋ฅธ ๋ฉ๋ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด ์ธ์์ ์ํ๋ ๋ฉ๋ด ํธ๋ค์ ์ฃผ๋ฉด ๋๋ค.
7 hinst
์๋์ฐ ์ฐฝ์ด ์ด๋ค ํ๋ก๊ทธ๋จ ์์์ ์๋์ฐ ์ฐฝ์ธ์ง ์๋ ค์ฃผ๋ ์ธ์คํด์ค ๋ฒํธ(์ด์ฉ์ฒด์ ๊ฐ ๋ง๋ ์๋ณ๋ฒํธ)
์ฆ ํ๋ก๊ทธ๋จ์ ํธ๋ค. WinMain์ ์ธ์๋ก ์ ๋ฌ๋ hInstance๋ฅผ ๋์
ํด ์ฃผ๋ฉด ๋๋ค.
8 lpvParam
CREATESTRUCT๋ผ๋ ๊ตฌ์กฐ์ฒด์ ๋ฒ์ง์ด๋ฉฐ ํน์ํ ๋ชฉ์ ์ ์ฌ์ฉ๋๋ค. ๋ณดํต์ NULL๊ฐ์ ์ฌ์ฉํ๋ค.
์ฐธ๊ณ ๋ฌธํ:
Win32 API ์ ๋ฌธ ๊ฐ์ข (soen.kr)
Win32 API ์ ๋ฌธ ๊ฐ์ข
WinMain ํจ์์์ ํ๋ ๊ฐ์ฅ ์ค์ํ ์ผ์ ์๋์ฐ๋ฅผ ๋ง๋๋ ์ผ์ด๋ค. ์๋์ฐ๊ฐ ์์ด์ผ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ์ ์ ์๊ณ ์ถ๋ ฅ์ ๋ณด์ฌ์ค ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์๋์ฐ๋ฅผ ๋ง๋๋ ค๋ฉด ์๋์ฐ ํด๋์ค๋ฅผ ๋จผ
www.soen.kr
'C++ > win api' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Win api] InvalidateRect vs updatewindow (0) | 2021.05.30 |
---|---|
[Win api] DC์ WM_PAINT, ๊ทธ๋ฆฌ๊ณ BeginPaint() vs GetDC() ๊ดํ ๋น๊ต (0) | 2021.05.30 |