本程序基于 VS2008,参考 MFC demo 做的。
写该文章的作用给自己做个备份,以后好直接用自己写好的代码。随便发表出来,赚点人气。
工程中新建一个基于 CWinThread 的类 CGift .
CGift 内部需要一个变量记录其对象个数,以及何时初始化临界区,销毁临界区。
还有一个临界区变量。
屏蔽 MFC 界面线程采用的消息循环,采用事件机制运行和结束线程。
头文件部分代码如下:
class CGift : public CWinThread
{
DECLARE_DYNAMIC(CGift)
protected:
// CGift(); // 动态创建所使用的受保护的构造函数
virtual ~CGift();
CGift(CWnd* pWnd, HDC hDC);
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
void Delete();
public:
void KillThread();
void UpdateBorder();
virtual void SingleStep() = 0;
public:
HANDLE m_hEventKill;
HANDLE m_hEventDead;
CRect m_rectBorder;
HDC m_hDC;
CDC* m_pDC;
protected:
static CRITICAL_SECTION m_csGiftLock;
private:
static int m_nCounter; //记录类对象个数
public:
inline int GetThreadCount(){return m_nCounter;}
protected:
DECLARE_MESSAGE_MAP()
};
源文件部分代码如下:
//=========== Class CGift Area =================
CRITICAL_SECTION CGift::m_csGiftLock;
int CGift::m_nCounter = 0;
// CGift
//IMPLEMENT_DYNCREATE(CGift, CWinThread)
IMPLEMENT