关于多线程,静态函数,无效指针的有关问题,(有关问题解决,午饭后就结帖。在线)

关于多线程,静态函数,无效指针的问题,在线等(问题解决,午饭后就结帖。。。在线)
我知道静态函数调用非静态函数要传指针,现在我的问题是:当调用了一次非静态成员函数后,又调用一次本类的非静态成员函数,有什么物殊要求吗?
为为什么##########处无效指针???
高手指教啊。。。
[code=C/C++][/code]
UINT CAutotest::AcceptAndRecv(LPVOID lParam)//static UINT AcceptAndRecv(LPVOID lParam)
//为一个线程。
{//传参已没有问题。
thread_info *pInfo=(thread_info*)lParam;
CMfemsDoc *pDoc=pInfo->pDoc ;
CAutotest *pAutotest=pInfo->pAutotest ;
ASSERT(pDoc);
ASSERT(pAutotest);
。。。。。
Response(buffer,lParam);
。。。。
}
BOOL CAutotest::Response(char *buffer,LPVOID lParam)
{
thread_info *pInfo=(thread_info*)lParam;
CMfemsDoc *pDoc=pInfo->pDoc ;
CAutotest *pAutotest=pInfo->pAutotest ;
ASSERT(pDoc);
ASSERT(pAutotest);
pAutotest->CmdParser(cmd);
。。。。。。
}
BOOL CAutotest::CmdParser(CString szCmd)
{
。。。。。。
ErrorMsg("Invalid SCPI command.Note the grammar\n");
。。。。。。
}
BOOL CAutotest::ErrorMsg(CString errorMsg)
{//#######################################################error occured here!!!
CMainFrame *pFrm=(CMainFrame*)::AfxGetMainWnd ();
ASSERT(pFrm);//pFrm==0//这里出错
CMfemsDoc*pDoc=(CMfemsDoc*)(pFrm->GetActiveDocument ());
ASSERT(pDoc);//这里出错
。。。。。
}


------解决方案--------------------
在非主线程内调用AfxGetMainWnd (); 都会失败,看看AfxGetMainWnd实现代码,它依赖于AFX_MODULE_THREAD_STATE
------解决方案--------------------
这是因为MFC禁止跨线程使用窗口对象,因此当你在一个不是主线程的窗口调用AfxGetMainWnd之类的函数试图获得一个在主线程中创建的窗口时,系统知道你即将要做的访问是非法的,因此返回一个NULL给你

关于此问题的分析见

http://blog.vckbase.com/arong/archive/2005/12/03/15578.html