C++ 中在進程中的窗口句柄傳入線程

首先上傳自己編寫的進程類,利用這個類可以很方便的將窗口句柄傳輸到進程中

class CThread
{
public:
	CThread(void);
	~CThread(void);


public:
	void Start();
	void Stop();
	void Run();

public:
	virtual void SetThreadData(DWORD dwParam);
	virtual DWORD GetThreadData();

public:
	static DWORD ThreadProc(LPVOID pParam);
public:
	HANDLE m_hThread;
	bool m_bExit;
	DWORD m_dwParam;
};

	void Start();
	void Stop();
	void Run();
這三個函數已經很明顯,分別是進程的開始,結束,和運行,下面是這三個函數的是實現。

void CThread::Stop(void)
{
	if(m_hThread)
	{
		m_bExit = TRUE;
		::WaitForSingleObject(m_hThread,INFINITE);
		::CloseHandle(m_hThread);
		m_hThread = NULL;
	}
}
void CThread::Start(void)
{
	DWORD dwThreadID;
	HANDLE hThread = ::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,this,0,&dwThreadID);

	ASSERT(hThread);
	m_hThread = hThread;
}
至於run函數,則是程序具體需要完成的任務,是需要自己Diy的,但是基本上上面這幾個是固定的

 void CThread::SetThreadData(DWORD dwParam)
 {
	if(m_dwParam != dwParam)
	{
		m_dwParam = dwParam;
	}
 }
DWORD CThread::GetThreadData()
{
	return m_dwParam;
}

下面這個是進程開始函數,這基本屬於固定方式,是要這樣寫的

DWORD CThread::ThreadProc(LPVOID pParam)
{
	CThread * pThis = (CThread*)  pParam;
	ASSERT(pThis);

	while(!pThis->m_bExit)
	{
		pThis->Run();
	}
	return 1;
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章