为什么在线程中调用AfxGetMainWnd()得到NULL?

FlankerV8 2006-02-05 11:43:05
DWORD WINAPI TestTherad(LPVOID lpParam)
{
CWnd *pMainWnd = AfxGetMainWnd(); //线程方式返回NULL

return 0;
}

void CFuncInThreadView::OnLButtonDown(UINT nFlags, CPoint point)
{
// 1、线程方式
DWORD dwThreadId;
HANDLE hHandle;
hHandle = CreateThread(NULL,0,TestTherad,NULL,0,&dwThreadId);
WaitForSingleObject(hHandle,INFINITE);
CloseHandle(hHandle);

// 2、函数方式
//TestTherad(NULL);

CView::OnLButtonDown(nFlags, point);
}
用线程方式得到NULL,用函数调用方式是正常的,这是为什么啊?
...全文
213 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hslinux 2006-02-09
  • 打赏
  • 举报
回复
AfxGetApp()->GetMainWnd();这样试下。
horris 2006-02-09
  • 打赏
  • 举报
回复
AfxGetMainWnd得到的是当前线程的主窗口(如果有的话)。
所以楼上正解
DentistryDoctor 2006-02-05
  • 打赏
  • 举报
回复
AfxGetMainWnd不能跨线程
anothervip 2006-02-05
  • 打赏
  • 举报
回复
AfxGetMainWnd()只用在主线程.
章月庭 2006-02-05
  • 打赏
  • 举报
回复
定义一个全局变量,保存这年指针吧

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧