VC++.NET编程讲座之六.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++.NET编程讲座之六.doc

VC++.NET编程讲座之六 摘要   本讲先来介绍MFC中的一档多视模式,并为Viewer添加一个用于显示Web页的视图CWebView,然后讨论两种比较常用的单文档视图的切换方法,最后对这两种方法进行分析和比较。   MFC一档多视模式   我们知道,MFC应用程序用一种编程模式使程序中数据与它的显示形式和用户交互分离开来,这种模式就是文档/视图结构。在单文档应用程序结构中,一个文档对应于一个视图。但有时一个文档可能需要多个视图以改变文档数据的显示方式,称为一档多视,MFC对于这种一档多视提供下列三个模式:   第一种模式是用在多文档应用程序中,用同一个视图类创建多个视图对象,并在各自的窗口中显示。例如,当我们选择窗口菜单的新建窗口命令,程序就会打开一个新的窗口显示出相同的文档内容。在界面上表现为,一个框架窗口中有多个文档窗口,如图1(a)所示。   第二种模式是动态切分窗口方式,即在同一个文档窗口中创建多个视图,用同一方式来显示相同的文档内容。如图1(b)所示。   第三种模式是静态切分窗口方式,即在同一个文档窗口中创建多个视图,但每个视图可用不同的方式来显示文档内容。如图1(c)所示。 (a) (b) (c)   图1 一档多视的三种模式 但在本讲中所讨论的一档多视是指在单文档应用程序中具体多个视图的特性。文档窗口每次只有一个视图显示,但可以通过菜单等命令在多个视图中进行切换。我们的目是将文档内容在普通文本和HTML浏览视图之间进行切换,如图2(a)和2(b)所示。 (a) (b) 图2 视图切换的结果   添加HTML浏览视图   为了使我们的这个文本浏览器功能更加强大,我们添加一个HTML浏览视图用来正确显示出扩展名为.htm或.html等的Web页效果。   1. 添加视图类CWebView   我们先来添加一个视图类CWebView,具体步骤如下:   (1) 启动Visual Studio .NET,打开上一讲的单文档应用程序项目Viewer。   (2) 打开项目菜单,单击添加类,弹出添加资源对话框,展开左边的所有类别,单击MFC,在右侧模板中选中MFC类,如图3所示。 图3 添加类对话框  (3) 单击打开按钮,弹出MFC类向导对话框。在对话框中输入类名CWebView,然后将基类选择为CHtmlView,CHtmlView类封装了URL资源的浏览和链接等功能。其它为默认值,结果如图4所示。 图4 使用MFC类向导  (4) 单击完成按钮。  2. 添加代码并测试CWebView  (1) 打开CWebView类的接口文件WebView.h,在最前面加上CHtmlView类的包含文件。  (2) 为CWebView类添加OnInitialUpdate函数的重载,并添加如图5加框部分的代码。 图5 在OnInitialUpdate中添加的代码  (3) 打开CViewerApp::InitInstance函数,将CSingleDocTemplate中的第4个参数的视图类由原来的CViewerView改为CWebView。  (4) 在CViewerApp类的实现文件前面加上。  (5) 运行程序。图6是显示某个文件的结果。 图6 CWebView类的显示效果 (6) 再把CViewerApp::InitInstance函数中的CSingleDocTemplate参数CWebView改回到CViewerView。 最一般的切换方法   对于单文档框架窗口中的多个视图的切换,我们先看看大多数Visual C++程序员普遍采用的一种方法。具体过程如下:   (1) 打开Viewer项目的Menu资源IDR_MAINFRAME,在视图菜单中添加三个菜单项,一个是水平线(分隔符),一个是普通文本(G),ID号设为ID_VIEW_TEXT,最后一个是HTML浏览(H),ID号设为ID_VIEW_HTML。结果如图7所示。 图7 在视图中添加的菜单项 (2) 视图切换的代码应该添加在CMainFrame类中。我们先在CMainFrame类添加一个切换函数SwitchToView1,代码如图8所示。 图8 SwitchToView1函数代码 函数SwitchToView1用了一些底层的MFC调用,我们来看看其代码执行过程。 如果主程序框架窗口一开始就激活CViewerView,即pOldView指向CViewerView,则当在程序中调用SwitchToView1(1)时,即参数nView为1,该函数中的第一行代码用来获得当前活动的视图,第二行代码是通过GetDlgItem获得标识为1的窗口指针,由于视图也是一个窗口,所以可以直接进行指针类型的强制转换。第一次调用时,标识为1的窗口指针是不存在的,因而这个视图指针就是NU

文档评论(0)

资料 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档