MFC使用AfxBeginThread创建线程时,总是在AfxIsValidAddress处崩溃

创建线程:AfxBeginThread(Func_0101,NULL);线程函数:UINTFunc_0101(LPVOIDlPara){inti=0xFFFFFF;cha... 创建线程:
AfxBeginThread(Func_0101, NULL);
线程函数:
UINT Func_0101(LPVOID lPara)
{
int i = 0xFFFFFF;
char buf[11] = "Func0101\r\n";
CMainFrame *pMainFrame = static_cast<CMainFrame *>(AfxGetMainWnd());
CRightView *pRightView = static_cast<CRightView *>(pMainFrame->m_splitterWnd1.GetPane(0,0));

//PostMessage(pRightView->m_hWnd,WM_USR_SHOWLOGEDIT1,NULL, (LPARAM)buf);

while(i--)
{

}

return 0;
}
崩溃行:
if (!AfxIsValidAddress(pOb, sizeof(CObject))) ///此处崩溃
{
TRACE(traceAppMsg, 0, "ASSERT_VALID fails with illegal pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
我的想的是创建线程后不再管它,让它执行一段时间后自动退出,另外,
AfxBeginThread(Func_0101,THREAD_PRIORITY_NORMAL,0,0,0);
这样调用时总是提示有两个AfxBeginThread,无法自动选择,找不到解决的方法
展开
 我来答
深湛又奇巧的小爱人v
2016-07-26 · TA获得超过825个赞
知道小有建树答主
回答量:683
采纳率:0%
帮助的人:190万
展开全部
不是不可以,是因为Enter, GetSafeHwnd()这个函数没有定义,其实编译错误已经提示你了。
追问
再问下,在线程中调用PostMessage,第一个参数怎么获取比较好?
我用AfxGetMainWin()->m_hWnd作为参数传递进来PostMessage后收不到,接收消息是在窗口分割后的一个view里面
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式