MFC MDI GetActiveView() 为空
2014-12-16 14:30
441 查看
今天写了一个多文档的应用程序,要响应菜单消息。
消息是在MainFrame中响应的。然后对当前的活动窗口进行修改。
结果我直接调用GetActiveView()返回的一直是空。
我上网搜了一下没有找到解决办法,后来查了一下MSDN才发现对应多文档(MDI)下这么用是不行的。需要先获得CMDIChildWnd然后在通过CMDIChildWnd获得view才行。
代码如下;
另外还有个问题,就是我添加的菜单一开始默认没有显示,需要在点击一次才能显示。
解决的办法是在MainFrame的create函数里面的下面部分
// 启用菜单个性化(最近使用的命令)
// TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。
CList<UINT, UINT> lstBasicCommands;
里面加上默认要显示的菜单命令ID:
lstBasicCommands.AddTail(ID_YOURID);
消息是在MainFrame中响应的。然后对当前的活动窗口进行修改。
结果我直接调用GetActiveView()返回的一直是空。
我上网搜了一下没有找到解决办法,后来查了一下MSDN才发现对应多文档(MDI)下这么用是不行的。需要先获得CMDIChildWnd然后在通过CMDIChildWnd获得view才行。
代码如下;
CMDIChildWnd *pChild = static_cast<CMDIChildWnd *>(GetActiveFrame()); if (pChild) { CYourView *pView = NULL; pView = static_cast<CYourView*>(pChild->GetActiveView()); if (pView) { //do something } }
另外还有个问题,就是我添加的菜单一开始默认没有显示,需要在点击一次才能显示。
解决的办法是在MainFrame的create函数里面的下面部分
// 启用菜单个性化(最近使用的命令)
// TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。
CList<UINT, UINT> lstBasicCommands;
里面加上默认要显示的菜单命令ID:
lstBasicCommands.AddTail(ID_YOURID);
相关文章推荐
- MDI中通过GetActiveView获得VIEW
- MFC几个常用函数:OnCreate和OnInitialUpDate,GetActiveFrame和MDIGetActive,Invalidate、SetModifiedFlage、UpdateAll
- GetActiveView 返回 NULL 为 MDI 框架窗口
- MFC几个常用函数:OnCreate和OnInitialUpDate,GetActiveFrame和MDIGetActive,Invalidate、SetModifiedFlage、UpdateAll
- GetActiveView 返回 NULL 为 MDI 框架窗口
- GetActiveView 返回 NULL 为 MDI 框架窗口
- MFC MDI在CFormView中当前关闭窗口的代码
- CView* GetActiveView( )
- MDI ChildFrame::OnCreate()时去getActiveFrame()问题
- 在mfc的sdi/mdi程序任意视图view内创建可停靠及浮动的工具栏方法
- CMDIChildWnd* MDIGetActive( BOOL* pbMaximized = NULL ) const;
- MDIFrameWnd类GetActiveFrame和MDIGetActive的区别
- MFC创建MDI程序一个Doc对应多个View
- 得到视图的句柄((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView()->m_hWnd;
- 多文档 GetActiveView 为什么总为空
- CFrameWnd::GetActiveView()函数
- CWnd::GetActiveWindow与CFrameWnd::GetActiveView 区别
- CFrameWnd::GetActiveView函数点滴
- 关于MFC中View类中GetDocument的出错解决方案
- 在DOc的构造函数中得到VIew类指针引起的问题(GetActiveView()引起的Access Violation;this->GetFirstViewPosition()=NULL;ASSERT(AfxIsValidAddress(this, siz