- Direct3D : ๊ธฐ๋ณธ ๊ทธ๋ํฝ API, 3D๋ฟ๋ง ์๋๋ผ 2D๋ ์ง์ํจ
- XACT : ์ด API๋ ์ฌ๋ฌ WAVํ์ผ์ ์ฌ์๊ณผ ๋์์ ์ฌ์ ํน์ฑ์ ๋ํ ์ ์ด๋ฅผ ์ง์ํจ, ํจ๊ณผ์๊ณผ ์์ ์ ์ ์ฉ
- DirectInput : ์กฐ์ด์คํฑ, ๋ ์ด์ฑ ํ ๋ฑ ๊ธฐ์กด ์ ๋ ฅ์ฅ์น๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ์์ด
- XInput : ์๋์ฐ์ Xbox360์ ์ํ ์๋ก์ด ์ ๋ ฅ ๊ด๋ จ API์, ์๋์ฐ XP ์๋น์ค ํฉ1 ์ด์๋ถํฐ ๋์ํจ, ์๋์ฐ์์ Xbox360 ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ํจ, Xinput์ ๊ธฐ์กด DirectInput๋๋ฐ์ด์ค์์๋ ๋์ ์ํจ
- DirectPlay : ๋คํธ์ํฌ ํต์ ์ ์ง์ํ๋ API์, ์ธํฐ๋ท์ด๋ ๋์ ํตํด ๋ค๋ฅธ ํ๋ ์ด์ด์ ์ฐ๊ฒฐ์ด ํ์ํ ๊ฒ์์ ๋ง๋ค ์ ์๊ฒ ํด์ค๋ค.
- DirectSetup : ๊ฒ์์ ์คํํ๋ ๋ฐ ํ์ํ DirectX ๋ฐํ์์ ์ต์ข ์ฌ์ฉ์ ์ค์น๋ฅผ ์ง์ํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณตํจ
- private : ์ธ๋ถ ๋ฐ ์์(ํ์) ํด๋์ค์์๋ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํจ, ์์ ๋ง ๊ฐ๋ฅํจ
- protected : ์์(ํ์) ํด๋์ค, ์์ ๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํจ
- public : ์์(ํ์) ํด๋์ค, ์ธ๋ถ, ์์ ๋ชจ๋ ์ ๊ทผ ๊ฐ๋ฅํจ
- C++์ ๊ธฐ๋ณธ์ ์ผ๋ก private์
- ์ด๋ ๊ฒ ์ ๊ทผ์ ์ ์ด ํ๋๊ฒ์ ๋ฐ์ดํฐ ์๋(Data Higing), ์ ๋ณด ์๋(Information Hiding)์ด๋ผ๊ณ ๋ถ๋ฆ
- ์กฐ๊ฑด : ํด๋์ค์ ๋์ผํ ์ด๋ฆ, ๋ฐํํ์ด ์์ด์ผํจ
- ์ ์ ํ์ง ์์ ์ ์ปดํ์ผ๋ฌ์์ ๋ํดํธ ์์ฑ์๋ฅผ ์ฝ์ ํจ
- ์กฐ๊ฑด : ํด๋์ค์ ๋์ผํ ์ด๋ฆ, ๋ฐํํ์ด ์์ด์ผํจ, ์๋ฉธ์ ์์ '~'๊ฐ ์์ด์ผํจ
- ๊ฐ์ฒด๊ฐ ์๋ฉธ๋ ๋ ํธ์ถ
- virtual์ด ๋ถ์ผ๋ฉด ๊ฐ์ ์๋ฉธ์ -> ์์ ๊ฐ์ฒด๊ฐ ํ๊ดด์ ๋ถ๋ชจ ํด๋์ค์ ์๋ฉธ์๋ฅผ ํธ์ถํจ
- ์์ฑ์์๋ ๋ค๋ฅด๊ฒ ๋งค๊ฐ๋ณ์๋ฅผ ์ฝ์ ํ ์ ์์
- ์ ์ ํ์ง ์์ ์ ์ปดํ์ผ๋ฌ์์ ๋ํดํธ ์๋ฉธ์๋ฅผ ์ฝ์ ํจ
- ๋ถ๋ชจ ํด๋์ค์ ํจ์๋ฅผ ์์ ํด๋์ค์ ํจ์์์ ์ฌ์ ์ ๊ฐ๋ฅํจ
- ํ์ง๋ง ๊ฐ์ ๋ ์๋
- ์์ ํด๋์ค์์ ๊ผญ ์์ ๊ฐ์ํจ์๋ฅผ ์ฌ์ ์ ํด์ผํจ
- ์์ ๊ฐ์ํจ์๊ฐ ์๋ ํด๋์ค๋ '์ถ์ ํด๋์ค'๊ฐ ๋์ด ๋์ ํ ๋น์ด ๋ถ๊ฐ๋ฅ ํด์ง
- ํจ์ ๋์ = 0์ ๋ถ์ฌ์ฃผ๋ฉด๋จ
- Ex. void init() = 0;
- try {} : ์์ธ ์ฒ๋ฆฌํ ๋ถ๋ถ์ ๊ฐ์
- catch {} : ์์ธ ๋ฐ์์ ์คํํ๋ ์ฝ๋๋ฅผ ๊ฐ์
- throw : catch์ ์ธ์๊ฐ์ ๋์ง
- ํด๋์ค๋ช ์์ ':'๋ฅผ ๋ถ์ด๊ณ ์ ๊ทผ ์ ํ์์ ํด๋์ค๋ช ์ ๋ถ์ด๋ฉด ๋จ
- ์์๊ณผ ์ ๊ทผ ์ง์์์ ์ฐ๊ด์ฑ์ ์ฌ๊ธฐ์ฐธ๊ณ ํ์ ์ฐ๋ฉด ๋๋ฌด ๊ธธ์ด์ง
-
๊ทธ ํจ์์ ์ํ๋ ๊ฐ์ฒด or ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝ ๋ถ๊ฐ
class Test { private: int _value = 1;
public: int getValue() const { //\_value = 2 -> ์๋ฌ return \_value; }
};
- C++๋ ์๋์ฐ์ Xbox360 ๊ธฐ๋ฐ์ ์์ฉ ๊ฒ์ ๊ฐ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉํ๋ ์ธ์ด์ด๋ค.
- ๋ง์ดํฌ๋ก์ํํธ ๋น์ฃผ์ผ C++์ ๋ง์ดํฌ๋ก์ํํธ DirectX API๋ ์ค์ํ ๋ฐ์ฒ ๊ธฐ์ ์ด๋ค.
- ์ฑ ์ ๋์ ์๋ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ฒฝํ์ ์์ค์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ดํด์ ๋๋ถ์ด C++, C, Java์ธ์ด์ ๋ํ ํ๋ฅญํ ์ง์์ด ํ์ํ๋ค.
- ์ค๋๋ ๋๋ถ๋ถ์ ์์ฉ ๊ฒ์์ ๊ฒ์ ์์ง์ ์ฌ์ฉํด์ ๋ง๋ค์ด์ง๋ค. ์ฌ๋ฌ๋ถ์ ์ฑ ์ ์ฝ์ผ๋ฉด์ ๊ฒ์ ์์ง์ ๋ง๋ค์ด ๋๊ฐ ๊ฒ์ด๋ค.
์๋ ์จ1๋ฐ ๋ณ์ ๋ค์ด ์ฑ ์ ์ข๊ฐ์ด ์ด์ํ๊ฑฐ ๋ฐ์ ์์จ๋;;
- 2D ์ปดํจํฐ ๊ฒ์์ ์ข ๋ฅ๋ฅผ ๋ ๊ฐ์ง๋ง ๋งํ๋ผ : ํผ์ฆ๊ฒ์, ํ์ผ ๊ธฐ๋ฐ ๊ฒ์
- API๋ ๋ฌด์์ธ๊ฐ? : Application Programming Interface
- ๊ฒ์์ ๋ง๋ค ๋ DirectX๊ฐ ์ ๊ณตํ๋ ์ฅ์ ์ ๋ฌด์์ธ๊ฐ? : ๊ธฐ์กด ์๋์ฐ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ๋ณด๋ค ํจ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง ์๋์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค.(?)
- ์ต์ ๊ฒ์ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ์์ฌ ๋ ์ฌ์ฉํ๋ DirectX API๋ ๋ฌด์์ธ๊ฐ? : XInput
- ํด๋์ค์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ์ ๋ํด ์ค๋ช ํ๋ผ : ํด๋์ค์ ์ ์ธ์ผ๋ก ๋ถํฐ ๋ง๋ค์ด์ง ๋ณ์๊ฐ ๊ฐ์ฒด์
- ํด๋์ค์ private๋ถ๋ถ์ ์ ์ธ๋ผ ์๋ ํญ๋ชฉ์ ์ด๋์์ ์ ๊ทผํ ์ ์๋๊ฐ? : ํด๋์ค ๋ด๋ถ์์๋ง
- ํฌ์ธํฐ๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ C++์ฐ์ฐ์๋ ๋ฌด์์ธ๊ฐ? : ๊ฐ์ ๋ฉค๋ฒ์ฐธ์กฐ์ฐ์ฐ์(->)
- ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ฝ๋์ ๋์ ์๋ฆฌ๋ ๋ฌด์์ธ๊ฐ? : throw๋ก ์์ธ๋ฅผ ๋์ง๋ฉด, std::exception์ ์์๋ฐ์ ํด๋์ค์์ ๋ฐ์ ์์ธ๋ฅผ ์ฒ๋ฆฌํจ
- WinMerge ํ๋ก๊ทธ๋จ์ ๋ฌด์จ ์ฉ๋๋ก ์ฌ์ฉํ๋๊ฐ? : ๊ฐ ํ์ผ์ ์ฐจ์ด๋ฅผ ๋น๊ตํ๊ธฐ ์ฌ์, ๋ฒ์ ๊ด๋ฆฌํด
- ์ปดํจํฐ ํ์ผ์ ๋ฐฑ์ ํ๋ ๊ฒ์ด ์ ์ค์ํ๊ฐ? : ๋น์ฐํ๊ฑธ ๋ญ ๋ฌผ์ด
- ๊ฒ์ ์์ง์ ๋ชฉ์ ์ ์ค๋ช ํ๋ผ. : ์์ฉ ๊ฒ์์ ๋ง๋ค๊ธฐ ์ํ์ฌ
- ์ฌ๋ฌ๋ถ์ด ์ฆ๊ฒผ๋ 2D ๊ฒ์ ์ค ์ผ๋ถ๋ฅผ ์ค๋ช ํ๋ผ. : ์ด๋์
- ์ฌ๋ฌ๋ถ์ด ๋ง๋ค๊ณ ์ถ์ 2D ๊ฒ์์ ์ค๋ช ํ๋ผ. : ์ด์ฑ ์ด
- ๊ฒ์์ ์ฌ๋ฐ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์์์๋ ์ฃผ๋ก ๋ฌด์์ด ์๋๊ฐ? : ์ข๋ณ์ ์ฑ ์ธ๊ฑฐ์
- windows.h
- ์๋์ฐ ํ๋ก๊ทธ๋๋ฐ์์ main์ด WinMainํจ์์ด๋ค.
- ๋ฐํํ์ int์ ๋ฐํ๋๋ ๊ฐ์ wParam ๋งค๊ฐ๋ณ์์ ์ ์ฅ๋ผ ์๋ ๊ฐ์ ๋ฐํํ๋ค.
- ๋ฉ์ธ์ง ๋ฃจํ ์ง์ ์ ์ WinMain์ด ์ข ๋ฃ๋๋ฉด 0์ ๋ฐํํจ
- ๋งค๊ฐ๋ณ์๋ค
- hInstance : ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ดํ ํฌ์ธํฐ๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํธ์ถ๋๋์ง ์๋ณํด์ผ ํ๋ ์ผ๋ถ ์๋์ฐ ํจ์์์ ์ฌ์ฉํ๋ค.
- hPrevInstance : ํญ์ NULL์ด๋ค. ์ด์ ๋ฒ์ ์ ์๋์ฐ ํธํ์ฑ๋ง์ ์ํด ์กด์ฌํ๋ ์ธ๋ชจ์๋ ๋งค๊ฐ๋ณ์๋ค.
- lpCmdLine : ์ปค๋งจ๋๋ผ์ธ ๋งค๊ฐ๋ณ์์ ๋ํด NULL๋ก ๊ฟ๋๋ ๋ฌธ์์ด์ธ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค. ์ปค๋งจ๋๋ผ์ธ ๋งค๊ฐ๋ณ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋ ์ ๋ฌ๋๋ ๋จ์ด๋ ๊ธฐํธ๋ค.
- mCmdShow : ์๋์ฐ๋ฅผ ์ด๋ป๊ฒ ๋ณด์ฌ์ค ๊ฒ์ธ์ง ์ค์ ํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์๋์ฐ์ ๋ชจ์ต์ ์ ์ดํ๋ ๋ฐ๋ ์์ ๋งค๊ฐ๋ณ์๋ค์ ์์
- cbSize : ๊ตฌ์กฐ์ฒด์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ธ๋ค. (์ฃผ๋ก sizeof(๊ตฌ์กฐ์ฒด)๋ก ๋์ ํจ)
- style : ์๋์ฐ๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ์ ํฌํจํด ์๋์ฐ์ ๋ํ ๋ค์ํ ์ธก๋ฉด์ ์ ์ํ๋ค. ์คํ์ผ์ '|'์ธ or์ฐ์ฐ์ผ๋ก ๊ฒฐํฉํ๋ค.
- lpfnWndProc : ์๋์ฐ์ ๋ณด๋ธ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ค.
- cbClsExtra : Windowํด๋์ค๋ฅผ ์ํด ์์คํ ์์ ํ๋ณดํด์ผ ํ๋ ์ฌ๋ถ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ํ๋ค.
- hInstance : ํด๋์ค๋ฅผ ๋ฑ๋กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ณํ๋ค
- hIcon : ์๋์ฐ์์ ์ฌ์ฉํ ํ๋ก๊ทธ๋จ์ ์์งํ๋ ํฐ ์์ด์ฝ์ ์ ์ํ๋ค.
- hCursor : ์๋์ฐ์์ ์ฌ์ฉํ ๋ง์ฐ์ค ์ปค์๋ฅผ ์ ์ํ๋ค.
- hbrBackground : ์๋์ฐ์ ๋ฐฐ๊ฒฝ์ ์ฑ์ฐ๋ ๋ฐ ์ฌ์ฉํ๋ ์, ํจํด์ ์ ์ํจ
- lpszMenuName : ์ค์ค๋ก ์ ์ํ์ง ์๋ ์๋์ฐ์ ๊ธฐ๋ณธ ๋ฉ๋ด๋ฅผ ์ ์ํ๋ค.
- hIconsm : ์๋์ฐ์ ์ ๋ชฉ ํ์์ค๊ณผ ์์ ๋ฉ๋ด์ ์ฌ์ฉํ ์์ ์์ด์ฝ์ ์ ์ํ๋ค.
- RegisterClassEx : RegisterClassEx()๋ฅผ ํธ์ถํด ํด๋์ค๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
- WinClass ์์ฑ
- WinClass๋ฑ๋ก (RegisterClassEx)
- CreateWindow
- ShowWindow
- ๋ฉ์ธ์ง ๋ฃจํ
- CreateWindow() : ์์ค์ด ๊ฑ ๊ทธ๋ ๋ค๊ณ ํ์
- lpClassName : Windowํด๋์ค ์ด๋ฆ ๋ฑ NULL๋ก ๋๋๋ ๋ฌธ์์ด์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ค. lpClassName์์ ์ฌ์ฉํ๋ ์ด๋ฆ์ CreateWindowClassํจ์์ lpszClassName๋ฉค๋ฒ์์ ์ฌ์ฉํ ์ด๋ฆ๊ณผ ๋์ผํด์ผ ํ๋ค.
- lpWindowName : ์๋์ฐ์ ์ ๋ชฉ ํ์์ค์ ๋ํ๋ผ ํ ์คํธ๋ค.
- dsStyle : ์์ฑํ ์๋์ฐ์ ์คํ์ผ์ด๋ค.
- WS_OVERLAPPEDWINDOW : ์ปจํธ๋กค์ด ์๊ณ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ ์๋์ฐ
- WS_OVERLAPPED : ์ปจํธ๋กค์ด ์๊ณ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋ ์๋์ฐ, ์๋์ฐ ๊ธฐ๋ฐ ๊ฒ์์ ๋ง๋ค ๋ ์ฃผ๋ก ์ฌ์ฉํจ
- WS_EX_TOPMOST | WS_VISIBLE | WS_POPUP : ์คํ์ผ 3๊ฐ๋ฅผ |๋ก ์ฐ๊ฒฐ, ๊ฒ์์ ์ ์ฒด ํ๋ฉด์ผ๋ก ๋ง๋ค ๋ ์ฌ์ฉํ๋ ์คํ์ผ
- x, y : ์๋์ฐ ์ผ์ชฝ ์ ๋ชจ์๋ฆฌ์ ์ขํ๋ค.
- nWidth : ์๋์ฐ์ ํฝ์ ๋จ์ ํญ์ด๋ค.
- nHeight : ์๋์ฐ์ ํฝ์ ๋จ์ ๋์ด๋ค.
- hWndParent : ๋ถ๋ชจ ์๋์ฐ
- hMenu : ์๋์ฐ ๋ฉ๋ด
- hInstance : Windowํด๋์ค๋ก๋ถํฐ ์๋ณํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋ณ์
- ipParam : ์ถ๊ฐ ์๋์ฐ ๋งค๊ฐ๋ณ์๋ค.
- ShowWindow(ํธ๋ค๋ฌ, ์ปค๋งจ๋);
- ์๋์ฐ๋ฅผ ํ์ํจ
-
์๋์ฐ๋ ๋ฉ์์ง ์ ์ก์ ํตํด ํ๋ก๊ทธ๋จ๊ณผ ์์ฌ์ํตํจ
- Ex. ๋ง์ฐ์ค ์์ง์, ํค ๋๋ฆ, ์๋์ฐ์์ ๋ณด๋ด๋ ๋ช ๋ น
-
WM_QUIT ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ ๊น์ง ๋ฃจํ๋ฅผ ๋ฐ๋ณต ์ํํจ
-
WinMain์ด ์์คํ ์ผ๋ก ๋ฐํ๋ ๋ ๋ฐํ ๊ฐ์ WM_QUIT ๋ฉ์์ง์ wParam ๋งค๊ฐ๋ณ์ ๊ฐ์ด ๋๋ค.
int done = 0; while(!done) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) done = 1; TranslateMessage(&msg); DispatchMessage(&msg); } }
-
๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ ํจ์์.
-
ํจ์์ ์ด๋ฆ์ CreateWindowClassํจ์์ WNDCLASSEX๊ตฌ์กฐ์ฒด ์์ ๋ช ์๋ ์ด๋ฆ๊ณผ ๋์ผํด์ผํจ
switch(msg) { case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam)
- RegisterClassEx : RegisterClassEx()๋ฅผ ํธ์ถํด ํด๋์ค๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
- ์๋ฌ ๋ฐ์์ 0์ ๋ฆฌํดํจ
- ์๋์ฐ๋ ๋ค์ํ ํ์ ์ฅ์น๋ ์ถ๋ ฅ ์ฅ์น์ ๋์ํ ์ ์๊ฒ ์ค๊ณ๋ผ ์๋ค.
- ์์ ๊ฐ์ ์ฅ์น๋ ๋ฆฝ์ฑ์ด ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ํ ์ถ๋ ฅ ์ฅ์น์ ์ ๊ทผํ ์ ์๊ฒ ํด์ค๋ค.
- ๊ทธ ์ฅ์น๋ ๋ฆฝ์ฑ์ ํต์ฌ์ด GDI(Graphics Device Interface)๋ค. GDI๋ DLL(Dynamic Link Library)๋ก, ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ์ ํจ๊ป ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋ฆฐํฐ๋ VGAํ๋ฉด์ ๊ทธ๋ฆด ์ ์๊ฒ ํด์ค๋ค.
- DC๋ Graphics๊ฐ์ฒด์ ์์ฑ์ ์ ์ํ๋ ๊ตฌ์กฐ์ฒด์ด๋ค. ์๋์ฐ ์ด์์ฒด์ ๋ ์๋์ฐ๋ฅผ ์์ฑํ ๋ DC๋ฅผ ๋ง๋ ๋ค.
-
์๋์ฐ๋ ํค ๋๋ฆ๊ณผ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ๋ฉ์ธ์ง๋ฅผ ๋ณด๋
-
๋ฉ์์ง๋ฅผ ์ฝ๊ธฐ ์ํด WM_CHAR๋ฅผ ์ฌ์ฉํจ, ์ฝ๊ธฐ ์ํด์๋ WinProcํจ์์ WM_CHAR๋ฉ์ธ์ง ํธ๋ค๋ฌ๋ง ์ถ๊ฐํ๋ฉด๋จ
case WM_CHAR { switch(wParam) { case 0x08: //๋ฐฑ์คํ์ด์ค case 0x09: //ํญ case 0x0A: //๋ผ์ธํผ๋ ... } }
- WM_CHAR์ VK(๊ฐ์ํค, Virtual Key)๊ฐ ์์
- WM_KEYDOWN : ํค๊ฐ ๋๋ฅด๋ ์ํ์ธ์ง
- WM_KEYUP : ํค๊ฐ ์๋๋ฆฐ ์ํ์ธ์ง
- VK(๊ฐ์ ํค ์ฝ๋)๋ ์๋์ฐ์ ์ํด ํ ๋น๋จ
-
ํค๋ณด๋์์ ๊ฐ ํค๋ ํ ๋น๋ ํค ์ฝ๋๋ฅผ ๊ฐ์ง๋ค.
-
WinUser.hํ์ผ์ ์กด๋ ๋ง์
if (vkKeys[VK_RIGHT]) // ํ์ฌ ์ค๋ฅธ์ชฝ ํ์ด ํค๋ฅผ ๋๋ ๋ค.
-
- GetAsyncKeyState : ์ฌ์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌ์ปค์ค๋ฅผ ๊ฐ์ง ์์ ๊ฒฝ์ฐ์๋ ํค๋ณด๋์ ํ์ฌ ์ํ๋ฅผ ์ฝ์ -> ์ฃผ์ํด์ ์ฌ์ฉํด์ผํจ
-
TextOut(ํธ๋ค๋ฌ, ์์นX, ์์นY, ๋ฌธ์, ํฌ๊ธฐ) : ํ ์คํธ๋ฅผ ์ถ๋ ฅํจ
case WM_PAINT: hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rect); TextOut(hdc, rect.right / 2, rect.left / 2, &ch, 1); EndPoint(hwnd, &ps); return 0;
- PeekMessage() : ๋ฉ์ธ์ง๊ฐ ์๋ ์๋ ๋ฆฌํดํจ
- GetMessage() : ๋ฉ์ธ์ง๊ฐ ์๋ค๋ฉด ๋ฉ์ธ์ง๊ฐ ์ฌ ๋ ๊น์ง ๋๊ธฐํจ (๋์ ์ธ ๊ฒ์์์๋ ์ข์ ์ ํ์ด ์๋)
- TranslateMessage() : ๊ฐ์ ํค ๋ฉ์์ง๋ฅผ ๋ฌธ์ ๋ฉ์์ง๋ก ๋ณํ
- DispatchMessage() : ์์คํ ๋ฉ์์ง ํ์์ ๊บผ๋ธ ๋ฉ์์ง๋ฅผ ํ๋ก๊ทธ๋จ์ ๋ฉ์์ง ์ฒ๋ฆฌ ํจ์(WinProc)๋ก ์ ๋ฌํ๋ค.
-
ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ์์ ํ ์ ์๋ ๊ฐ์ฒด๋ค.
-
CreateMutexํจ์๋ฅผ ํธ์ถํด ์์ฑ๊ฐ๋ฅํ๋ค.
bool AnotherInstance() { HANDLE ourMutex; ourMutex = CreateMutex(NULL, true, "Use_a_duffernt_string_here_for_each_program_48161_XYZZY"); if (GetLastError() == ERROR_ALREADY_EXISTS) return true; return false; }
- ํฌ๊ฒ ํ์ ์ฌ๋ผ์ด์ฑ or ์ ์ ํ ๋ฉํฐํ์คํน์ด ์๋ค.
- ํ์ ์ฌ๋ผ์ด์ค : ํ๋์ ์ค๋ ๋๋ฅผ ์์ํ๋ฉด ์์ฃผ ์งง์ ์๊ฐ ๋์ ์คํํ๊ณ ์ด ๊ณผ์ ์ ๋ชจ๋ ์ค๋ ๋์ ๋ฐ๋ณต
- ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ผ์ด์ค ์๊ฐ์ 1/20๋ฐ๋ฆฌ์ด
- ์ผ๋ฐ์ ์ธ ์๋์ฐ ์์คํ ์์ ์ฃผ์ด์ง ์๊ฐ์ ์์ญ ๊ฐ์ ์ค๋ ๋๊ฐ ์คํ๋๋ฏ๋ก, ์ ์ ํ ๋ฉํฐ ํ์คํน์ ์ฌ์ ํ ํ์ํจ
- ์๋์ฐ์ ๋ฉํฐํ์คํน ํน์ง์ ์งง์ ํ์ ์ฌ๋ผ์ด์ค์์๋ง ์คํ์ด ํ์ฉ๋จ
- ๋ค์ ํ์ ์ฌ๋ผ์ด์ค๊ฐ ๋ฐ์ํ ๋์ ๋ํ ๋งค์ฐ ์ ํ๋ ํต์ ๋ฅผ ๊ฐ์ง
- WinMain์ด ์๋์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์์ ์
- Winodw ํด๋์ค ๋ฑ๋ก ๋ฐฉ๋ฒ
- WNDCLASSEX ๊ตฌ์กฐ์ฒด์ ๋ํด์
- CreateWindowํจ์์ ๋งค๊ฐ๋ณ์
- ์๋์ฐ ๋ฉ์ธ์ง ๋ฃจํ
- ์๋์ฐ ๋ฉ์ธ์ง ์ฒ๋ฆฌ๋ฅผ ์ํ WinProc์ด๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉ
- ๋ฌธ์ ์ ๋ ฅ์ ์ํ WM_CHAR์ ๋ํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ฐฐ์
- ํค๋ณด๋๋ฅผ ๊ฒ์ ์ปจํธ๋กค๋ฌ์ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ์ํด WM_KEYDOWN, WM_KEYUP์ ์ฌ์ฉํจ
- ํ์ฌ ํ๋ก๊ทธ๋จ์์ ์คํ์ค์ธ ์ธ์คํด์ค๋ฅผ ํ ์คํธํ ์ ์๋ ํจ์๋ฅผ ์์ฑ
- ์๋์ฐ๋ ์งง์ ํ์ ์ฌ๋ผ์ด์ค์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด ๋ฉํฐํ์คํน์ ์ฌ์ฉํจ
- ์๋์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์์ ์? : WinMain
- WNDCLASSEX ๊ตฌ์กฐ์ฒด์์ lpfnWndProc๋ฉค๋ฒ์ ์ญํ ์ ? : ์๋์ฐ์ ๋ณด๋ธ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ค.
- CreateWindow ํจ์์ dsStyle๋งค๊ฐ๋ณ์ ๊ฐ ์ค ์๋์ฐ ๋ชจ๋ ๊ฒ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์คํ์ผ์? : WS_OVERLAPPED
- dsStyle ๋งค๊ฐ๋ณ์ ๊ฐ ์ค ์ ์ฒด ํ๋ฉด ๊ฒ์์ ์ฌ์ฉ๋๋ ์คํ์ผ ๊ฐ์ ๋ฌด์์ธ๊ฐ? : WS_EX_TOPMOST | WS_VISIBLE | WS_POPUP
- hwnd๊ฐ NULL์ด๋ผ๋ฉด ๋ค์ if๋ฌธ์ true, false์ค ๋ฌด์์ ์ถ๋ ฅํ๋๊ฐ? : false
- ์๋์ฐ๋ ํ๋ก๊ทธ๋จ ์์์ ์ด๋ป๊ฒ ์์ฌ์ํต ํ๋๊ฐ? : ๋ฉ์์ง ์ ์ก์ ํตํด์
- ๋ฉ์ธ์ง ๋ฃจํ๋ ์ธ์ ๋๋๋๊ฐ? : WM_QUIT์ด ๋ฉ์ธ์งํ์ ์กด์ฌํ๋ค๋ฉด
- ํ๋ก๊ทธ๋จ์์ ๋ฉ์์ง๋ฅผ ๋ฌด์ํ๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋๋๊ฐ? : ?
- WM_CHAR ๋ฉ์์ง๋ ์ด๋์ ์ฌ์ฉ๋๋๊ฐ? : ๋ฌธ์๋ฅผ ์ฝ์ ๋
- ๊ฐ์ ํค ์ฝ๋๋ ๋ฌด์์ธ๊ฐ? : ์๋์ฐ์์ ์ง์ ํ ๋น๋ ํค๋ณด๋ ๊ฐ ํค์ ํ ๋น๋ ์ฝ๋
-
๊ทธ๋ฆผ 2.1์ ์๋ 'Hello World'ํ๋ก๊ทธ๋จ์ 'Hello World by:'๋ค์ ์๊ธฐ ์ด๋ฆ์ด ๋์ค๋๋ก ์์ ํ๋ผ
const char APP_TITLE[] = "Hello World by : Deokwon";
-
๋ฆฌ์คํธ 2.14์์ ์ด๋ค ํค๋ฅผ ๋๋ฌ์ผ PC์คํผ์ปค์์ ๋นํ์์ด ๋๊ฒ ํ ์ ์๋๊ฐ? : ๋ฐฑ์คํ์ด์ค, ํญ, ๋ผ์ธํผ๋, ์บ๋ฆฌ์ง ๋ฆฌํด, ์ด์ค์ผ์ดํ
-
๊ทธ๋ฆผ 2.8์ ์๋ keyboard2 ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด ํค๋ณด๋ ์ ๋ ฅ์ ํ ์คํธ ํด๋ณด๋ผ
- ๋์์ ์ ๋ ฅ ๊ฐ๋ฅํ ํค์ ๊ฐ์๋? : 6๊ฐ
- ์๋ํ์ง ์๋ ํค ์กฐํฉ์ ๋์ดํด๋ณด๋ผ : ?