C++类中只有静态成员函数才能设置为线程的处理过程函数,但是此时静态成员函数只能调用类的静态成员函数和方法,这对调用类中的方法和成员变量造成了很大的局限性。那么如何解决这个问题呢?下面介绍一种普遍使用的编程技巧!
//.h文件
#ifndef CCONTROLMANAGER_H_
#define CCONTROLMANAGER_H_
#include"CManagerBase.h"
class CControlManager : public CManagerBase
{
public:
CControlManager(CFrontManager *fronterManager) : CManagerBase(fronterManager) { hControlWorkThread = NULL; }
~CControlManager()
{
}
virtual BOOL Start();
virtual void DealProcedure(LPVOID lparam);
virtual void WaitForComplete();
virtual void OnReciveComplete(BYTE *pdata, NET_COMPLETEEVENT &net_complete, unsigned long length);
//发送http请求消息
void GetControlInfo();
private:
static DWORD WINAPI ControlWorkThreadProc(void *lparam);
DWORD RealWorkerProc(void *lparam);
private:
HANDLE hControlWorkThread;
};
#endif
#include"CControlManager.h"
BOOL CControlManager::Start()
{
hControlWorkThread = CreateThread(NULL, 0, ControlWorkThreadProc, this, 0, NULL);
if (hControlWorkThread == NULL) {
return FALSE;
}
return TRUE;
}
void CControlManager::DealProcedure(LPVOID lparam)
{
}
void CControlManager::WaitForComplete()
{
}
void CControlManager::OnReciveComplete(BYTE *pdata, NET_COMPLETEEVENT &net_complete, unsigned long length)
{
//在这里处理其相关的字符串
}
void CControlManager::GetControlInfo()
{
}
DWORD WINAPI CControlManager::ControlWorkThreadProc(void *lparam)
{
CControlManager *controlManager = (CControlManager *)lparam;
return controlManager->RealWorkerProc(lparam);
}
DWORD CControlManager::RealWorkerProc(void *lparam)
{
return 0;
}
这里在RealWorkerProc()函数中就可以当成类的普通成员函数来使用了。