我们在学习多线程异步编程时,会遇到这么一段函数:
void ThreadFunc()
{
CTime time;
CString strTime;
m_bRun=TRUE;
while(m_bRun)
{
time=CTime::GetCurrentTime();
strTime=time.Format("%H:%M:%S");
::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,strTime);
Sleep(1000);
}
}
执行之后发现有这样一个问题:在执行::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,strTime)时有如下的错误
这个错误的主要原因是由于多线程的问题引起的,这里只给出解决的办法,具体解释哪位高手可以帮忙一下,解决的办法是修改AfxGetMainWnd()为AfxGetApp()->m_pMainWnd。这样问题就解决了。