多线程的函数,但是每次都说我Access Violation
static UINT ThreadFun1(LPVOID pParam) //线程函数
{
UINT u=0;
CRect rt(99,99,501,501);
int index;
CMultithreadsView* pView=(CMultithreadsView*)pParam;
CDC* myDC=pView->GetDC();
myDC->MoveTo(pView->point[0]);
for(index=0;index<360;)
{
myDC->LineTo(pView->point[index]);
Sleep(10);
index++;
}
int x=3;
return u;
}
这是线程函数,我调试了一下,发现错误是myDC->LineTo(pView->point[index]);。说我非法访问,但是我明明都建立了呀。有没有大神可以指导一下。
4 个解决方案
#1
线程中不要直接操作UI,改成PostMessage,由主程序处理
#2
有没有越界?
GetDC 要配对的 ReleaseDC
GetDC 要配对的 ReleaseDC
#3
你可以试试传dc进入线程。
#1
线程中不要直接操作UI,改成PostMessage,由主程序处理
#2
有没有越界?
GetDC 要配对的 ReleaseDC
GetDC 要配对的 ReleaseDC
#3
你可以试试传dc进入线程。
#4
Multiple Threads in the User Interface
http://msdn.microsoft.com/zh-cn/library/ms810439.aspx