在另一个线程中无法用((CMainFrame *)AfxGetMainWnd()),高手支招!

shu 2002-08-30 02:48:53
如何得到主线程的CMainFrame?
我把CMyDocument的指针传进另一个线程,通过他的一个函数调用((CMainFrame *)AfxGetMainWnd())不报错,但显然返回的不是。
怎么办,这段代码在主线程中也用到,不想改动太多。
...全文
78 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxszx 2002-08-31
  • 打赏
  • 举报
回复
使用afxGetMainWnd()是不行,但使用 FindWindow()可以.那是因为afxGetMainWnd()反回的句柄不是全局的。
alaofangel 2002-08-31
  • 打赏
  • 举报
回复
你是使用工作者线程还是mfc线程呢?
shu 2002-08-31
  • 打赏
  • 举报
回复
Bind(天高云淡) 是对的,正好也不用改变太多程序!
至于不能跨线程访问mfc对象不太正确。
可我还是不明白,为生么使用AfxGetMainWnd()就不行。
讨论一下吧,搞清楚再好不过了。
Bind 2002-08-30
  • 打赏
  • 举报
回复
CMainFrame * pWnd = (CMainFrame*)(::AfxGetApp()->m_pMainWnd);
即可
suheli 2002-08-30
  • 打赏
  • 举报
回复
定义一个消息和一个全局变量,用消息通知主线乘,让主线乘取出指针,放入全局变量中,冲现成读区变量
蒋晟 2002-08-30
  • 打赏
  • 举报
回复
不能跨线程访问MFC对象。
piethy 2002-08-30
  • 打赏
  • 举报
回复
那你可以做一个结构,把它们两个都放进去不可以么
shu 2002-08-30
  • 打赏
  • 举报
回复
我已经用这个参数传Doc了 !
piethy 2002-08-30
  • 打赏
  • 举报
回复
在主线程中得到,然后作为参数在AfxBeginThread()中传进来

15,472

社区成员

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

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