线程故障!解决办法

线程故障!!
void   CMFC_Ant_MultithredingDlg::OnAnt()   //启动线程!!!
{
//   TODO:   Add   your   control   notification   handler   code   here
        //m_Param-> m_Paint=this;
AfxBeginThread(ThreadFun,(LPVOID)this);
}

UINT   CMFC_Ant_MultithredingDlg::ThreadFun(LPVOID   pParam)
{      
srand(   (unsigned)time(   NULL   )   );
CMFC_Ant_MultithredingDlg   *m_Param=(CMFC_Ant_MultithredingDlg*)pParam;  
CClientDC   dc(m_Param);
int   m_direction;
m_Param-> m_Param-> m_Ant.x=200;
m_Param-> m_Param-> m_Ant.y=200;
dc.SetPixel(m_Param-> m_Param-> m_Ant.x,m_Param-> m_Param-> m_Ant.y,RGB(255,0,0));
for   (int   i;i <1000;i++)
{
m_direction=rand()%8;
switch(m_direction)
{
case   0:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x--,m_Param-> m_Param-> m_Ant.y++,RGB(255,255,255));
break;
case   1:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x,m_Param-> m_Param-> m_Ant.y++,RGB(255,255,255));
break;
case   2:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x++,m_Param-> m_Param-> m_Ant.y++,RGB(255,255,255));
break;
case   3:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x--,m_Param-> m_Param-> m_Ant.y,RGB(255,255,255));
break;
case   4:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x++,m_Param-> m_Param-> m_Ant.y,RGB(255,255,255));
break;
case   5:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x--,m_Param-> m_Param-> m_Ant.y--,RGB(255,255,255));
break;
case   6:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x,m_Param-> m_Param-> m_Ant.y--,RGB(255,255,255));
break;
case   7:
dc.SetPixel(m_Param-> m_Param-> m_Ant.x++,m_Param-> m_Param-> m_Ant.y--,RGB(255,255,255));
break;
}
dc.SetPixel(m_Param-> m_Param-> m_Ant.x,m_Param-> m_Param-> m_Ant.y,RGB(255,0,0));
//Sleep(1);

}
return   1;
}


调试通过了!但是点按扭就出错误!!!为什么啊?
没分了!不然一定多给!谢谢!!

------解决方案--------------------
问题比较多,基本上,最主要的还是不能把MFC的对象在线程里面乱传。只能传句柄。
------解决方案--------------------
CClientDC dc(m_Param);

dcBUDUI
------解决方案--------------------
应该是
m_Param-> m_Param-> m_Ant.x=200;
下面有问题,我看前面都没有什么问题

八成是m_Param指针的使用问题