GetActiveView 返回 NULL 为 MDI 框架窗口
来源:互联网 发布:典基网络 怎么样 编辑:程序博客网 时间:2024/05/09 14:43
症状
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窗口框架使用
- 标准模板库的空间配置器 STL allocator
- android ADB命令的使用
- 嵌入Ruby 1
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
- 音频设备的3种硬件接口--PCM,IIS和AC97
- GetActiveView 返回 NULL 为 MDI 框架窗口
- android 唤醒和点亮屏幕
- 位图思想
- HDU 1885 —— Key Task(搜索,bfs)
- 谁是谁的谁
- Java中的访问控制
- cocos2d-x 3.0 引用第三方库 及编译成apk时android mk文件写法
- 网络编程——获取主机名称和对应的ip地址
- 12-1 长颈鹿对动物类的继承(public继承)