您的位置:首页 > 编程语言 > C语言/C++

C++ 中在进程中的窗口句柄传入线程

2015-07-26 21:31 351 查看
首先上传自己编写的进程类,利用这个类可以很方便的将窗口句柄传输到进程中

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: