C++ 中在进程中的窗口句柄传入线程
2015-07-26 21:31
351 查看
首先上传自己编写的进程类,利用这个类可以很方便的将窗口句柄传输到进程中
下面这个是进程开始函数,这基本属于固定方式,是要这样写的
DWORD CThread::ThreadProc(LPVOID pParam)
{
CThread * pThis = (CThread*) pParam;
ASSERT(pThis);
while(!pThis->m_bExit)
{
pThis->Run();
}
return 1;
}
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;
}
相关文章推荐