⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainthread.h

📁 HGE 2D游戏引擎制作的一个演示
💻 H
字号:
/**********************************************
				主线程控制类
**********************************************/

#ifndef MAINTHREAD_H
#define MAINTHREAD_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "extern.h"

#define FRAME_TIME				30									//每帧间隔多少毫秒?

class MainThread  
{
public:
	MainThread();
	virtual ~MainThread();

	CRITICAL_SECTION m_CS;											//线程使用的临界区,不能同时写这个文件
	BOOL m_bEnterCriticalSection;
	HWND m_hMainWnd;

public:
	void Run();														//主循环
	BOOL StartThread();
	void EndThread(){m_bEnd=TRUE;}									//结束线程工作
	BOOL IsEndDone(){return m_bEndDone;}

	void SetMainWnd(HWND hWnd){m_hMainWnd = hWnd;}; 				//记录主窗体句柄

	BOOL InitInstance();
	virtual int ExitInstance();

	void SetActive(bool bactive){m_bActive = bactive;};
	BOOL IsActive(){return m_bActive;};

	static unsigned int __stdcall RunPtr(PVOID pvoid);				//做RUN的回调使用

	//动画控制
public:
	DWORD m_dwLastFrameTime;										//上一帧多少毫秒什么时间?
	DWORD m_dwDrawCount;											//一共绘制到窗口多少次?
	void OnFrameTime();												//显示下一帧

	//线程相关
protected:
	BOOL m_bActive;													//是否活动?不活动时不做ACCEPT操作
	HANDLE m_ThreadHandle;
	unsigned int m_ThreadID;
	volatile BOOL m_bEnd;											//侦听是否结束的标志
	volatile BOOL m_bEndDone;										//是否结束完成

protected:
	DWORD m_dwStartTime;
	DWORD GetCurSecond(){return GetTickCount()/1000;};

protected:
	void MainLoop();


};

#endif//MAINTHREAD_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -