sdk多线程的问题
class CWork
{
public:
CWork(void);
CWork(HWND hwnd);
~CWork(void);
void StartTask();
private:
void static TaskMain(LPVOID param);
static list<UrlData> listUrl;
HWND hWnd;
};
CWork::CWork(void)
{
}
CWork::CWork(HWND hwnd)
{
hWnd = hwnd;
}
CWork::~CWork(void)
{
}
void CWork::StartTask()
{
HANDLE hTh;
hTh = (HANDLE)_beginthread(TaskMain,0,this);//我调试时候看到this里面有hwnd的值
}
void CWork::TaskMain(LPVOID param)
{
::CoInitialize(NULL);
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
CWork *work = (CWork*)param; //到这里转换之后hwnd就为空了
CHttpSockets request;
request.init();
CDB db;
CFileInfo file;
PostMessage(work->hWnd,WM_LISTVIEW,NULL,NULL);
}
调用代码
CWork work(hWnd);
work.StartTask();
问题看注释