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

📄 multithread.h

📁 通过手机数据线连接手机
💻 H
字号:
#ifndef _MULTITHREAD_H
#define _MULTITHREAD_H

#include "jwfcx.h"

/*关于CWinTrheadEx的用法:
1、生成子类,重载Process()以处理具体的内容
2、初始化线程:
m_pMThr = (CXXXThr*)AfxBeginThread( RUNTIME_CLASS(CXXXThr), THREAD_PRIORITY_ABOVE_NORMAL );
如果m_pMThr非空,则初始化成功,此后可用此指针来操作本线程
3、设置接收通知的窗口
m_pMThr->SetNotifyWnd( hWnd );
注意一定要设置后StartProcess才能工作
4、调用StartProcess()来启动处理过程,此函数以消息方式来启动Process(),
这样Process()就进入了本线程的独立空间中
5、不需要此线程时,要调用Quit()来退出线程,注意缺省时线程实例将
自动删除,并不需要做 delete m_pMThr;
*/

/////////////////////////////////////////////////////////////////
// CThreadInfo
// 1999-05-01 ChK
// CMultiThreadBase的工作方式已不再新代码中使用,保留之仅为兼容老的代码
// 新的多线程方式:以CWinThread为核心,用发送线程消息的方式来操作之
// 本类提供一些辅助功能,如进度指示等

class JWX_EXT_CLASS CThreadInfo
{
public:
	CThreadInfo();
	~CThreadInfo();

	//通知主控线程退出
	void ThreadExit( );
	//通知主控线程完成工作
	void ThreadDone( );

	//在开始一个线程工作时由主控调用,此函数设置运行标志及复位中止标志
	void ThreadStart();

	//用于进度指示,由具体的循环代码调用,下传的两个参数为发向指定
	//窗口的两个消息参数,具体解释由调用者来完成

	//典型用法: p1 进度百分数,p2完成百分数
	virtual void Progress( WORD p1, DWORD p2 );


	void SetNotifyWnd( HWND hwnd )
	{
		m_hwndNotify = hwnd;
	};
//此函数已不用
/*
	void SetRuning( BOOL runing )
	{
		m_isRuning = runing;
	};
*/
	BOOL IsRuning()
	{
		return m_isRuning;
	};

	void SetAborting( BOOL aborting)
	{
		m_isAborting = aborting;
	};

	BOOL IsAborting()
	{
		return m_isAborting;
	};

protected:
HWND m_hwndNotify;			//窗口句柄,用于接收进程通知消息
WORD m_oldP1;
DWORD m_oldP2;
BOOL m_isRuning;
CEvent * m_pEVIsIdle;	//标识是否空闲

BOOL m_isAborting;
};

/////////////////////////////////////////////////////////////////////////////
// CWinThreadEx thread

class JWX_EXT_CLASS CWinThreadEx : public CWinThread, public CThreadInfo
{
	DECLARE_DYNCREATE(CWinThreadEx)
protected:
	CWinThreadEx();           // protected constructor used by dynamic creation
public:
	//通知副线程开始处理过程,此函数通过消息来启动Process()
	BOOL StartProcess();
	//终止处理过程,等到过程结束(Process()返回)时才返回
	virtual BOOL StopProcess();
	//退出线程并删除this,直到线程安全退出,此函数才返回
	void Quit();

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CWinThreadEx)
	public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	//}}AFX_VIRTUAL

// Implementation
protected:
	virtual ~CWinThreadEx();

	//子类重载此成员,在其中进行任务处理,必要时检查IsAborting()标志
	virtual void Process();
	//测试是否可启动处理过程,子类可以重载之以便在必要时禁止启动过程(注意在子类中要调用父类成员)
	virtual BOOL CanStartProcess();

	// Generated message map functions
	//{{AFX_MSG(CWinThreadEx)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG
	afx_msg void OnStartProcess( UINT wParam, LONG lParam );
	DECLARE_MESSAGE_MAP()
};

#endif  //

⌨️ 快捷键说明

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