CMainFrame* pMainFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
CChildFrame* pChildFrame=(CChildFrame*)(pMainFrame->MDIGetActive());
CThread_MFCView* pView=(CThread_MFCView*)pChildFrame->GetActiveView();我用这三行代码未能得到我的视图指针,调试中,pMainFrame有值,但pChidlFrame却为空,然后接着中断了。网上的方法我都试了,皆以失败告终。请前辈赐教
CChildFrame* pChildFrame=(CChildFrame*)(pMainFrame->MDIGetActive());
CThread_MFCView* pView=(CThread_MFCView*)pChildFrame->GetActiveView();我用这三行代码未能得到我的视图指针,调试中,pMainFrame有值,但pChidlFrame却为空,然后接着中断了。网上的方法我都试了,皆以失败告终。请前辈赐教
解决方案 »
- 诚恳高手给个简单MFC多线程实例
- const char* 指针的删除
- ::::::::::::关于系统托盘弹出MENU后不能自动销毁问题,:::::难
- 请教几个关于视频会议系统的问题
- 我如何屏敝MDI中子窗口里的关闭按钮(就是右上角的那个小叉,让它变成灰色)
- 路过高手请指点一下,socket API程序
- 怎样调用dll中的函数
- 求讲解操作系统原理的电子书籍
- _CommandPtr pCmd; 调用pCmd.CreateInstance (__uuidof(Command))失败!求原因
- ***关于在多线程中使用CSocket进行数据传输的问题,望指教****
- 有关BMP图片的生成
- 关于光标问题
CMainFrame* pMainFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
CFrameWnd* pChildFrame= pMainFrame->GetActiveFrame();
CThread_MFCView* pView=(CThread_MFCView*)pChildFrame->GetActiveView();
不过用你的方法,pChildFrame有值,但是pChildFrame的值和pMainFrame一样。
高手快来啊
当跨线程传递CWnd指针时,调用CWnd的某些函数时,这些函数会进行有效性检查,也就是检查map,因为map中没有相应的记录,就会报错。通常这个错误是 AsserValid(this)
所以,在MFC中跨线程传递参数,最好传递句柄HWND,而不是CWnd对象指针。但是还是有很多疑惑,我发现在work thread中AfxGetMainWnd()有值,但是用它去MDIGetActive()却不行。另外我想问,谁能帮我解答一下传句柄然后由句柄得到指针,使用指针和直接使用指针会有哪些不同?
多View的时候遍历所有的View多麻烦。