为了为应用创建有用的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函数。
#include
请参阅: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返回窗口的弹出菜单 |
Copyright 2023 fuwu029.com赣ICP备2022008914号-4