BOOL EndApp() // この中でシステムも含めた全ての後処理をするのでクラスの中には入れれない { delete MainFrame; // [注意]SystemがReleaseされる前に消す事 SYSTEM_Release(); tdnSystem::Release(); tdnText::CleanUpModule(); tdnInput::Release(); return TRUE; }
//***************************************************************************************************************************** // WinMain //***************************************************************************************************************************** int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // メモリリーク検知器 _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); // メモリ確保した瞬間検知器 //_CrtSetBreakAlloc(90); MSG msg; HWND hWnd; if (GetAsyncKeyState(VK_CONTROL) & 0x8000) { ScreenMode = SCREEN1080p; bFullScreen = TRUE; } hWnd = InitWindow(hInstance, nCmdShow); InitApp(hWnd); // メインループ for(;;){ if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ){ if( !GetMessage(&msg, NULL, 0, 0) ) break; TranslateMessage(&msg); DispatchMessage(&msg); } else { if( MainFrame->Update() ) MainFrame->Render(); } } // 全解放 Number::CleanUp();// ナンバー //解放の先頭で静的Debug関連解放 Debug::CleanUp(); delete MainFrame; SYSTEM_Release(); iexSystem::CloseDebugWindow(); IEX_ReleaseInput(); IEX_Release(); IEX_ReleaseAudio(); OKB_Release(); Text::CleanUpModule(); return 0; }