正在加载图片...
第16单元多文档界面程序 4.在没有任何活动的MDI子窗口时,MDI框架窗口可以拥有自己的缺省菜单。当有 活动子窗口时,MDI框架窗口的菜单条会自动被子窗口的菜单所替代。框架会自动监视当 前活动的子窗口类型,并相应的改变主窗口的菜单。例如,在Ⅴ isual studio中,当选择对话 框模板编辑窗口或源程序窗口时,菜单会有所不同。但是,对于程序员来说,只需在 InitInstance()中注册文档时指定每一类子窗口(严格的讲是文档)所使用的菜单,而不必 显式的通过调用函数去改变主框架窗口的菜单,因为框架会自动完成这一任务。 5.MD框架窗口为层叠、平铺、排列子窗口和新建子窗口等一些标准窗口操作提供了 缺省的菜单响应。在响应新建子窗口命令时,框架调用 CDoc Template: CreateNewFrame() 为当前活动文档创建一个子窗口。 CreateNew Frame()不仅创建子窗口,还创建与文档相 对应的视图。 与开发基于对话框的应用程序和SD应用程序一样,使用 App Wizard可生成一个MD 应用程序框架,在此基础上,程序员可使用 ClassWizard和各种资源编辑器来充实自己的应 用程序 AppWizard为MDl程序框架创建了以下类: 类 “关于”对话框 CChildframe 子框架窗口,用于容纳视图 CMy App 应用程序类 绘图程序视图类 CMy View 绘图视图类 MAin Frame 框架窗口(用来容纳子窗口),是MDI应用程序的主窗口 可以看出,MDI比SD多了一个 CchildFrame(子框架窗口)类,而且 MAin Frame的 职责也不同了 另外,MD和SDI的初始化应用程序实例方法上也有所不同。MD1应用程序的 nitInstance()函数代码为: BOOL CDrawApp: InitInstance o //初始化工作 CMultiDocTemplate* pDocTemplate /MDI文档模板 pDoc Template new CMultiDocTemplate( IDR DRAWTYPE RUNTIME CLASS( CDrawDoc) RUNTIME CLASS(CChildFrame) RUNTIME CLASS(CDrawView)) MAin Frame* mAinfRame= new MAin Frame;//建立MDI主框架窗口第 16 单元 多文档界面程序 327 口。 4.在没有任何活动的 MDI 子窗口时,MDI 框架窗口可以拥有自己的缺省菜单。当有 活动子窗口时,MDI 框架窗口的菜单条会自动被子窗口的菜单所替代。框架会自动监视当 前活动的子窗口类型,并相应的改变主窗口的菜单。例如,在 Visual Studio 中,当选择对话 框模板编辑窗口或源程序窗口时,菜单会有所不同。但是,对于程序员来说,只需在 InitInstance()中注册文档时指定每一类子窗口(严格的讲是文档)所使用的菜单,而不必 显式的通过调用函数去改变主框架窗口的菜单,因为框架会自动完成这一任务。 5.MDI 框架窗口为层叠、平铺、排列子窗口和新建子窗口等一些标准窗口操作提供了 缺省的菜单响应。在响应新建子窗口命令时,框架调用 CDocTemplate::CreateNewFrame() 为当前活动文档创建一个子窗口。CreateNewFrame()不仅创建子窗口,还创建与文档相 对应的视图。 与开发基于对话框的应用程序和 SDI 应用程序一样,使用 AppWizard 可生成一个 MDI 应用程序框架,在此基础上,程序员可使用 ClassWizard 和各种资源编辑器来充实自己的应 用程序。 AppWizard 为 MDI 程序框架创建了以下类: 类 说 明 CAboutDlg “关于”对话框 CChildFrame 子框架窗口,用于容纳视图 CMyApp 应用程序类 CmyDoc 绘图程序视图类 CMyView 绘图视图类 CMainFrame 框架窗口(用来容纳子窗口),是 MDI 应用程序的主窗口 可以看出,MDI 比 SDI 多了一个 CchildFrame(子框架窗口)类,而且 CMainFrame 的 职责也不同了。 另外,MDI 和 SDI 的初始化应用程序实例方法上也有所不同。MDI 应用程序的 InitInstance()函数代码为: BOOL CDrawApp::InitInstance() { … … // 初始化工作 CMultiDocTemplate* pDocTemplate; // MDI 文档模板 pDocTemplate = new CMultiDocTemplate( IDR_DRAWTYPE, RUNTIME_CLASS(CDrawDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CDrawView)); AddDocTemplate(pDocTemplate); CMainFrame* pMainFrame = new CMainFrame; // 建立 MDI 主框架窗口
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有