#pragma once
#include <Windows.h>
class ECTrainer;
enum class ECTMSG;
// 処理の基本クラス
class BaseProcess
{
protected:
ECTrainer* _pEct;
bool _messageQueReady; // メッセージキューの準備状況
HANDLE _threadHandle; // スレッドハンドル
DWORD _threadID; // スレッドID
// スレッドエントリポイント
static DWORD WINAPI ThreadEntry(LPVOID lpParameter);
// 非メッセージ時の処理
virtual bool Routine();
// メッセージ処理
virtual bool EventProc(MSG& msg);
public:
// コンストラクタ
BaseProcess(ECTrainer* pEct);
// スレッド起動
virtual bool Launch();
// 初期化
virtual bool Init();
// スレッド本体(protected, 非virtual)
virtual bool MainLoop();
// スレッド終了待ち
virtual bool WaitForExit(DWORD timeOut = 3000);
// メッセージを送る
virtual bool Tell(ECTMSG msg, WPARAM wp = 0, LPARAM lp = 0);
};