GetActiveView 返回 NULL 为 MDI 框架窗口
来源:互联网 发布:php 对象赋值 编辑:程序博客网 时间:2024/05/08 18:37
症状
GetActiveView() 函数将返回活动视图(如果有的话)附加到框架窗口(CFrameWnd)。此函数返回 NULL时为 MDI 主框架窗口 (CMDIFrameWnd)调用。
原因
在 MDI 应用程序中,MDI 主框架窗口(CMDIFrameWnd)不具有与其相关联的视图。相反,每个单独的子窗口(CMDIChildWnd)具有与之关联的一个或多个视图。因此,对 MDI主框架窗口的 GetActiveView() 函数的调用,则返回 NULL。本文的"更多信息"部分提供了在 MDI 应用程序中不同的窗口的布局。
解决方法
若要解决此问题,请查找活动的 MDI子窗口(如果有的话),然后调用 GetActiveView()函数的子窗口。可以通过调用 MDIGetActive()或 GetActiveFrame() 函数,找到活动的 MDI子窗口,此代码中所示:
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
// Get the active MDI child window.
CMDIChildWnd *pChild = CMDIChildWnd *)pFrame->GetActiveFrame();
/* or CMDIChildWnd *pChild =
pFrame->MDIGetActive();
*/
// Get the active view attached to theactive MDI child window.
CMyView *pView = (CMyView *)pChild->GetActiveView();
更多信息
MDI 框架窗口的工作区被称为MDICLIENT,也称为工作区中的客户端窗口覆盖。此客户端窗口中又包含零个或更多的子窗口,其中每个可显示的视图,如本图中所示:
---------------------------
| Frame Window | ---> CMDIFrameWnd
| (main application window)|
---------------------------
|
--------------------
| Client Window | ---> MDICLIENT window class
| (no view attached) |
--------------------
|
-----------------------------------------------------------
| |
--------------------- --------------------
| Child Window 1 | | Child Window 2 | ---> CMDIChildWnd
| (one or more views) | | (one or more views |
--------------------- --------------------
在此图中所示,MDI 框架窗口没有直接与之相关联的视图。视图实际上与程序关联的 MDI 子窗口。
因此,为 MDI 主框架窗口调用 GetActiveView() 函数将返回 NULL,意味着没有直接与 MDICLIENT 相关视图。通过先查找活动的 MDI 子窗口,在本文的解决方案一节中所述,为的子窗口查找活动视图,可以获取 MDI 应用程序中的活动视图。
转载自:http://support.microsoft.com/kb/129649
- GetActiveView 返回 NULL 为 MDI 框架窗口
- GetActiveView 返回 NULL 为 MDI 框架窗口
- MFC MDI GetActiveView() 为空
- 在VC++项目中为MDI主框架窗口添加位图
- 在VC++项目中为MDI主框架窗口添加位图
- MFC中非MDI子框架窗口
- 修改MDI工程主框架窗口标题
- findViewById返回为NULL
- MDI窗口
- 在VC++项目中为MDI主框架窗口添加位图(通过截获MDICLIENT的WM_PAINT消息)
- 多文档 GetActiveView 为什么总为空
- getSupportFragmentManager().findFragmentById()返回为null
- popupWindow使用返回为null
- getSupportFragmentManager().findFragmentById()返回为null
- 在MDI主框架窗口中添加图标Ico
- MDI应用的主框架窗口背景设置
- 为VC MDI主窗口程序加背景图
- 一个MDI窗口框架,可作为简单的MIS窗口框架使用
- Ubuntu下adb 显示insufficient permissions for device,或Eclipse中DDMS设备显示?????
- 花开花落,终只能一个人欣赏。伤感文字分享。
- 将Android移植到ODroid上
- GRUB引导Win8,Win7,Ubuntu
- 简单理解SaaS
- GetActiveView 返回 NULL 为 MDI 框架窗口
- 由孩子缺钙易激起的病症
- ORA-00600错误及其解决方案
- C语言精华记录——玖(常用库函数)
- 静态初始化数组由函数返回
- 那些抓不住的日子
- phpcms 调用全站任何模型数据PC标签
- Delphi XML文件传输DEMO
- Delphi中adoquery的两个小问题