#pragma once
#include <Windows.h>
#include <string>
class ECTrainer;
enum class ECTMSG;
// 処理の基本クラス
class BaseProcess
{
protected:
ECTrainer* _pEct;
bool _messageQueReady; // メッセージキューの準備状況
HANDLE _threadHandle; // スレッドハンドル
DWORD _threadID; // スレッドID
bool _mainThread; // メイン(GUI)スレッドかどうか
// スレッドエントリポイント
static DWORD WINAPI ThreadEntry(LPVOID lpParameter);
// 非メッセージ時の処理
virtual bool Routine();
// メッセージ処理
virtual bool EventProc(MSG& msg);
// クラス名取得(派生クラスでオーバーライドすればFPS表示)
virtual std::string ClassName() { return ""; } // FPS表示
public:
// コンストラクタ
BaseProcess(ECTrainer* pEct);
// スレッド起動
virtual bool Launch();
// 初期化
virtual bool Init();
// スレッド本体
virtual bool MainLoop();
// スレッド終了待ち 正常終了でハンドル閉じる
virtual bool WaitForExit(DWORD timeOut = 3000);
// メッセージを送る(非同期)
virtual bool PostMsg(ECTMSG msg, WPARAM wp = 0, LPARAM lp = 0);
};