CMDIFrameWnd

CObject
 └CCmdTarget
    └CWnd
       └CFrameWnd
          └CMDIFrameWnd

CMDIFrameWnd类提供了Windows多文档界面(MDI)子窗口的功能和管理窗口的功能。
为了为应用创建有用的MDI子窗口,需要从CMDIFrameWnd派生类。
为派生类增添成员变量,从而为应用存储指定的数据。实现消息处理的成员函数,并在派生类中实现消息映射,以便于指出当消息传递给窗口后,将发生什么事情。
可以通过MDI调用Create函数或CMDIFrameWnd的LoadFrame函数来构造MDI子窗口。
在调用Create或LoadFrame之前,必须使用C++的new操作符在堆中构造框架窗口对象。在调用Create函数之前,必须使用AfxRegisterWndClass全局函数来登记窗口类,从而为框架设置图标或类的风格。
使用Create成员函数,用于传递作为即时参数的框架创建参数。
LoadFrame需要的参数比Create少,不过,它需要资源更多的缺省值,包括框架的标题、图标、加速表和菜单。为了LoadFrame函数的使用,所有的资源必须有相同的资源ID 号(例如, IDR_MAINFRAME)。
尽管MDIFrameWnd由CFrameWnd类派生,但由CMDIFrameWnd派生的框架窗口不必由DECLARE_DYNCREATE来声明。
CMDIFrameWnd类从CFrameWnd类中继承了大部分缺省用法。如果需要这些功能的详细情况,请参考CFrameWnd类的描述。CMDIFrameWnd拥有下列额外的功能:
·MDI框架窗口用于管理MDICLIENT窗口,并在其与控件栏的结合中复位。MDI客户窗口是MDI子框架窗口的直亲。WS_HSCROLL与WS_VSCROLL窗口风格指定了CMDIFrameWnd将应用于MDI客户窗口,而不是主框架窗口,这样用户就可以滚动MDI 客户区(例如,Windows的程序管理器)。
·当没有活动的MDI子窗口时,MDI框架窗口拥有作为菜单条使用的缺省菜单。当有活动的MDI子窗口时,MDI框架窗口的菜单条由MDI子窗口的菜单所替换。
·如果有MDI子窗口,那么MDI框架窗口则操作当前的MDI子窗口。例如,命令消息将于MDI框架窗口之前发送到MDI子窗口。
·MDI框架窗口拥有下列标准Windows菜单命令的缺省句柄:
·ID_WINDOWS_TILE_VERT
·ID_WINDOWS_TILE_HORZ
·ID_WINDOWS_CASCADE
·ID_WINDOWS_ARRANGE
·MDI框架窗口也有ID_WINDOWS_NEW功能,以用于在当前文档中创建新的框架或视图。应用可以覆盖这些缺省的命令操作,以用于定制 MDI窗口操作。
最好不要使用C++ delete操作符来删除框架窗口,相反,请使用CWnd::DestroyWindow函数。当销毁窗口时,PostNcDestroy的CFrameWnd命令将删除C++对象。当用户关闭框架窗口时,缺省的OnClose操作将调用DestroyWindow函数。
如果要了解有关CMDIChildWnd函数的更多信息,请参阅联机文档“Visual C++程序员指南”中的“框架窗口主题”。
#include <afxwin.h>
请参阅:CWnd, CMDIChildWnd


CMDIFrameWnd类的成员

构造函数
CMDIFrameWnd构造一个CMDIFrameWnd

操作
MDIActivate激活一个不同的MDI子窗口
MDIGetActive获取当前活动的MDI子窗口,并得到指示它是否最大化的标志
MDIIconArrange重排所有最小化文档子窗口
MDIMaximize最大化一个MDI子窗口
MDINext激活紧跟在当前活动子窗口之后的子窗口,并把当前活动子窗口放到所有子窗口的最后
MDIRestore将一个MDI子窗口从最大化或最小化状态恢复回来
MDISetMenu重置一个MDI框架窗口的菜单,Window弹出菜单,或两者都重置
MDITile将所有的子窗口以平铺方式排列
MDICascade将所有的子窗口以级联方式排列

可覆盖的函数
CreateClient为CMDIFrameWnd类创建Windows MDICLIENT窗口。通过CWnd类的OnCreate成员函数来调用
GetWindowMenuPopup返回窗口的弹出菜单