首先上傳自己編寫的進程類,利用這個類可以很方便的將窗口句柄傳輸到進程中
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;
}