메모내용

윈도우 무한 루프

프로그램이 꺼지지않고 지속적으로 돌아가는 원리

기존 메시지 루프

                
                    MSG msg;
    
                    // 기본 메시지 루프입니다:
                    while (GetMessage(&msg, nullptr, 0, 0))
                    {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                    }
                
            

게임용 메시지 루프

                
                    MSG msg;
    
                    while (true)
                    {
                        // 살짝 메시지가 있는지만 엿보는 함수
                        // HWND 를 nullptr 로 지정하면 현재 쓰레드와 관련된 모든 메시지를 받게 된다.
                        // 0 , 0 으로 넣으면 특정 메시지를 거르는 등 필터를 거치지 않고 모두 받는다.
                        // PM_REMOVE 하면 메시지를 살펴보자마자 Message Que 에서 꺼낸다
                        if (PeekMessage(&msg,nullptr,0,0, PM_REMOVE))
                        {
                            if (msg.message == WM_QUIT)
                            {
                                // 프로그램 종료
                                break;
                            }
                            
                            //메시지 처리
                            TranslateMessage(&msg);
                            DispatchMessage(&msg);
                            
                        }
                
                        // 게임 로직
                
                        game->Update();
                    }