728x90
윈도우 API는 일반적인 C문법과 다르게 Winmain에서 코드가 실행된다.
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
// TODO: 여기에 코드를 입력합니다.
// 전역 문자열을 초기화합니다.
LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadStringW(hInstance, IDC_DX3D2310, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// 애플리케이션 초기화를 수행합니다:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_DX3D2310));
MSG msg = {};
InitDevice();
// 기본 메시지 루프입니다:
while (msg.message != WM_QUIT) // 메세지에 종료가 들어오지 않으면 true를 반환한다.
{
if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) // 메세지 들어왔을때만 처리하고 아닐때는 버림.
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
} // 게임프로그래밍에서 많이 쓰는 루프방법.
else
{
// Update
// 이러면 프레임이 잘 나온다.
Render();
}
}
ReleaseDevice();
return (int) msg.wParam;
}
위부분의 while문에서 코드가 반복되며, 루프가 진행될 때 메세지를 처리하고, 아닐경우 진행하는 방식으로 데이터를 처리함.
저 while문까지 진행되는 순서도.
wWinMain이 실행됨
InitInstance 로 애플리케이션을 초기화한다.
실패시 FALSE로 터트림.
MSG초기화.
InitDevice를 실행하여 Instance에 데이터를 기입함.
그후, while문 진입. 종료인터럽트가 들어오지 않으면 반복함.
이다.
이걸 잘라서 기입해보면,
위와같이 나누었으면, 공통사항과 공통사항이 아닌것을 각각 class로 나누어서. 실행시키면 된다
728x90
'서울게임아카데미 교육과정 6개월 국비과정' 카테고리의 다른 글
20231011 7일차. Framework 나누기2 (0) | 2023.10.11 |
---|---|
20231010 6일차. Framework 나누기 (0) | 2023.10.10 |
20231006 5일차 DX3D 사각형 출력하기. (0) | 2023.10.06 |
20231005 4일차 DX3D 초기화 및 정점버퍼생성 (0) | 2023.10.05 |
20231004 3일차 교육시작 WInAPI짚고 넘어가기 (0) | 2023.10.04 |