文档/视图结构的工作机制 视图通过 GetDocument 成员函数获得指向相关 联的文档对象的指针 通过该指针调用文 档类的成员函数来 从文档中读取数据 视图把数据显示 于计算机屏幕上 用户通过与视图的 视图通过相关联的文档类 交互来查看数据并 的成员函数将经过修改的 对数据进行修改 数据传递给文档对象 文档对象获得修改过的数据之后,对 其进行必要的修改,最后保存到永久 介质(如磁盘文件)中
6 文档/视图结构的工作机制 视图通过GetDocument 成员函数获得指向相关 联的文档对象的指针 通过该指针调用文 档类的成员函数来 从文档中读取数据 视图把数据显示 于计算机屏幕上 用户通过与视图的 交互来查看数据并 对数据进行修改 视图通过相关联的文档类 的成员函数将经过修改的 数据传递给文档对象 文档对象获得修改过的数据之后,对 其进行必要的修改,最后保存到永久 介质(如磁盘文件)中
应用程序对象 消息首先传递入框 架窗口和视图 回x 文件②)查看(D品示()帮助D 框架窗口对象 NolsIshl 视图对象 文档视图类间的 信息交换 toolbar 文档对象 A 这是关于工具条的样例程序 就绪 数字 SDI文档视图应用程序示意图
7 SDI文档/视图应用程序示意图
1113SD程序中文档、视图对象的创建过程 SD程序中框架窗口、文档和视图的创建是在应用程序对象的 Initlnstance(成员函数中通过文档模板类完成的: CSingleDocTemplate* pDocTemplate;∥刨建单文档模板类对象 pDocTemplate new CSingleDocTemplate (IDR_ MAINFRAME, RUNTIME CLASS( CMyDoc2, ICMy Doc是应用程序中的文档类 RUNTIME CLASS( CMain Frame), CMain Frame是应用程序中的框架窗口 RUNTIME CLASS( CMyView)}; CMyView是应用程序中的视图类 AddDocTemplate(pDoc Template);加载文档模板类对象到文档模板列表 CCommandlinelnfo cmdInfo Parse Line(cmdInfo;初始化 CCommand Linelnfo对象 (! Process shellcommand( cmdInfo)据对象中的信息启动程序 return FAlse m_pMainWnd-> ShowWindow(SW_ SHOW); m_pMainWnd-> UpdateWindow0 ∥显示和更新窗口
8 11.1.3 SDI程序中文档、视图对象的创建过程 SDI程序中框架窗口、文档和视图的创建是在应用程序对象的 InitInstance()成员函数中通过文档模板类完成的: CSingleDocTemplate * pDocTemplate; //创建单文档模板类对象 pDocTemplate = new CSingleDocTemplate (IDR_MAINFRAME, RUNTIME_CLASS (CMyDoc), //CMyDoc是应用程序中的文档类 RUNTIME_CLASS (CMainFrame), //CMainFrame是应用程序中的框架窗口 RUNTIME_CLASS (CMyView) ); //CMyView是应用程序中的视图类 AddDocTemplate(pDocTemplate); //加载文档模板类对象到文档模板列表 … CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //初始化CCommandLineInfo对象 if(! ProcessShellCommand(cmdInfo)) //据对象中的信息启动程序 return FALSE; m_pMainWnd -> ShowWindow(SW_SHOW); m_pMainWnd -> UpdateWindow(); //显示和更新窗口
1114SDⅠ程序的消息传递过程 DefwindowProc 当用户选择了菜单项, 单击了快捷键或工具条 应用程序对象 按钮,系统就会发送 WM COMMAND消息。框 架窗口实际上是大多数 框架窗口 WM COMMAND消息的接 受者,但WM_ COMMAND 文档模板 消息还可以在视图、文 档,甚至应用程序类中 文档对象 被处理。 活动视图
9 11.1.4 SDI程序的消息传递过程 当用户选择了菜单项, 单击了快捷键或工具条 按钮,系统就会发送 WM_COMMAND消息。框 架窗口实际上是大多数 WM_COMMAND消息的接 受者,但WM_COMMAND 消息还可以在视图、文 档,甚至应用程序类中 被处理
112 Doc/view框架的主要成员 Doc/iew框架虽然可以调用成百上千个不 同的类,但是核心类只有五个 CWinApp CDocument CⅤiew CDocTemplate CFramewnd 10
10 11.2 Doc/View框架的主要成员 Doc/View框架虽然可以调用成百上千个不 同的类,但是核心类只有五个: CWinApp CDocument CView CDocTemplate CFrameWnd