我在一个对话框程序里调用AfxBeginThread创建了一个线程函数,线程函数里什么都没做,就是调用AfxGetMainWnd()函数获取窗口指针。我知道AfxGetMainWnd()函数获取的是当前线程的窗口指针,如果在主线程里调用,则返回主线程的窗口指针,如果是在工作线程里调用,则返回工作线程的窗口指针。我跟踪了一下发现,在线程函数里调用时,AfxGetMainWnd()函数返回的窗口指针并不为NULL,可是工作线程函数并没有窗口呀,那为什么指针不为NULL呢,请大家给指点一下。
另外,我在线程函数里还调用了AfxGetApp()->GetMainWnd()获取主线程中的窗口指针,测试表明,在线程函数里调用AfxGetMainWnd() 和调用AfxGetApp()->GetMainWnd()的得到的指针确实是不一样的。
// ThreadFunc为类的静态成员函数
UINT CstrcpyDlg::ThreadFunc(LPVOID lPvoid)
{
CWnd *pWnd1=AfxGetMainWnd(); //获取工作线程的窗口指针
CWnd*pWnd2=AfxGetApp()->GetMainWnd(); //获取主线程的窗口指针
return 0;
}