函数是:
UINT WorkerThread( LPVOID pParam )
{
CDC *pDc=(CDC*)pParam;
pDc->LineTo(50,50);
pDc->SetPixel(i,30,RGB(0,0,255));
Sleep(10);
AfxMessageBox("aaaaaa");
return 0; // 返回并退出线程
}
调用的时候,我用:
AfxBeginThread(WorkerThread,&m_pic);
执行后,AfxMessageBox("aaaaaa");正常。
但是,
pDc->LineTo(50,50);pDc->SetPixel(i,30,RGB(0,0,255));都没有,为什么?
UINT WorkerThread( LPVOID pParam )
{
CDC *pDc=(CDC*)pParam;
pDc->LineTo(50,50);
pDc->SetPixel(i,30,RGB(0,0,255));
Sleep(10);
AfxMessageBox("aaaaaa");
return 0; // 返回并退出线程
}
调用的时候,我用:
AfxBeginThread(WorkerThread,&m_pic);
执行后,AfxMessageBox("aaaaaa");正常。
但是,
pDc->LineTo(50,50);pDc->SetPixel(i,30,RGB(0,0,255));都没有,为什么?
AfxBeginThread((AFX_THREADPROC)WorkerThread,this); LPVOID pParam 的值请用 this指针,
然后再调用主线程的函数,这里假如为MyFunction();
void CMyView::MyFunction()
{
CDC *pDc=GetDC();
if(pDc!=NULL)
{
pDc->LineTo(50,50);
pDc->SetPixel(i,30,RGB(0,0,255));
}
}
#include "MyView.h"
UINT WorkerThread( LPVOID pParam )
{
CMyView* pView=(CMyView*)pParam;
pView->MyFunction();
Sleep(10);
}