int Main::StartLoop(HWND hwnd, IdleFunc idleFunc, PreTransMessageFunc preTransFunc, PUMPMSG_TYPE type) { this->SetPumpMessageType(type); if (idleFunc == NULL) idleFunc = DefIdle; if (preTransFunc == NULL) preTransFunc = DefPreTransMessage; m_State = STATE_RUN; Timer timer; while (m_PumpMessageFunc(&m_ExitCode, hwnd, idleFunc, preTransFunc)) this->Run(timer.ElapseSecondReset()); return m_ExitCode; }