nim_duilib/base/framework/win_message_pump.h

66 lines
1.3 KiB
C
Raw Normal View History

2019-04-19 17:19:57 +08:00
// The base class of a cross flatform message pump implemention
#ifndef BASE_FRAMEWORK_WIN_MESSAGE_PUMP_H_
#define BASE_FRAMEWORK_WIN_MESSAGE_PUMP_H_
#include "base/framework/message_pump.h"
#if defined(OS_WIN)
#include <windows.h>
#include "base/time/time.h"
namespace nbase
{
class BASE_EXPORT WinMessagePump: public MessagePump
{
public:
// UI<55><49>Ϣ<EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD>
// UI<55><49>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Ϣ<EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD>
// TranslateMessage/DispatchMessageģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dispatcher<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class BASE_EXPORT Dispatcher
{
public:
virtual ~Dispatcher() {}
virtual bool Dispatch(const MSG &message) = 0;
};
WinMessagePump() : have_work_(0), state_(NULL) {}
virtual ~WinMessagePump() {}
void RunWithDispatcher(Delegate* delegate, Dispatcher* dispatcher);
virtual void Run(Delegate* delegate) { return RunWithDispatcher(delegate, NULL); }
virtual void Quit();
protected:
struct RunState
{
int run_depth; // Ƕ<>׵<EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool should_quit; // <20>Ƿ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>
Delegate* delegate; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ί<EFBFBD><CEAF>
Dispatcher* dispatcher; // <20><>Ϣ<EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD>
};
// ȡ<><C8A1>ǰ<EFBFBD><C7B0>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int64_t GetCurrentDelay() const;
virtual void DoRunLoop() = 0;
// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD>е<EFBFBD>ʱ<EFBFBD><CAB1>
TimeTicks delayed_work_time_;
// ָʾ<D6B8><CABE>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>kMsgDoWork<72><6B>Ϣ
long have_work_;
// ָʾ<D6B8><CABE>ǰMessagePump<6D><70>״̬
RunState* state_;
};
}
#endif // OS_WIN
#endif // BASE_FRAMEWORK_WIN_MESSAGE_PUMP_H_