Visual C++ 2010新特性:MFC的三大巨变

来源:互联网 发布:网络诈骗七万判几年 编辑:程序博客网 时间:2024/05/01 18:26

 

在Visual C++ 2010中,无论从用户体验,还是从性能方面,IDE都有着巨大的改进,这些改进大大地提高了程序员开发效率。除此之外,增强的MFC,为程序员能够开发出绚丽多彩、安全稳定的应用程序奠定了坚实的基础。本文从Visual C++ 2010便于生成Windows 7应用程序、重新启动管理器、任务对话框三个方面介绍Visual C++ 2010下MFC的新功能! j8 {5 O3 O( b& p/ x
便于生成Windows 7应用程序
        提起Windows 7,从用户体验方面讲,绚丽的窗口、华丽的动画效果是其一大特点。如果在VC++6.0中开发出类似效果的应用程序,那是相当的不易,甚至是不太可能。对于程序员来说,能够“与时俱进”才能体现当代程序员的钻研精神,面对Windows 7如此强大的绚丽效果,难道我们只能是“叹而用之”了吗?多亏有了Visual C++ 2010,使我们自己开发的应用程序也能“炫”起来。
(1)支持对Windows API的访问
        Windows 7 引入了多项激动人心的新技术和新功能以及新的 API,正是这些新技术、新功能和新的API给用户带来了简单、易用、绚丽等全新体验。Visual Studio 2010 提供了对所有新 Windows API 的访问。Visual Studio 2010 提供了为本机 Windows API 编写代码所需的 Windows SDK 组件,您可以通过使用 Visual Studio 2010 中的 SDK 头文件和库来利用如 Direct3D 11、DirectWrite、Direct2D 和 Windows Web Service API 等的革新。0 B$ M1 G9 g# @& h
  除了向开发人员开放所有 Windows API 以外,此版本的 Visual Studio 还使您可以在增强的 MFC 的帮助下更轻松地编写 Windows 应用程序。可通过 MFC 库访问主要的 Windows 7 功能,而不必直接写入本机 API。只需重新编译,您现有的 MFC 应用程序就可以在 Windows 7 上大放异彩。而且,您的新应用程序可以充分利用新增的功能。
  (2)增强与Windows Shell的集成- D# d1 {2 [) O: B1 d, C( g: l
  MFC 与 Windows Shell 的集成也有所增强。通过使用Visual C++ 2010中增加的文件处理程序进行预览、创建缩略图和搜索,使我们的应用程序可以更好地与 Windows 资源管理器集成。这些功能作为MFC 应用程序向导中的选项提供,如下图,我们只需勾选相应选项,MFC将自动生成实现这些处理程序的ATL DLL 项目。& q1 x; C! o8 Y) {; n

8 i5 ~+ J/ g7 i: r! W- J3 u


 (3)超级任务栏( q$ w9 l; O/ f4 X3 X
  Windows 7 中最值得注意的一项用户界面更改就是超级任务栏。增强的MFC 允许我们使用这些功能,如跳转列表、选项卡式缩略图、缩略图预览、进度条、图标覆盖等。下图显示了一个选项卡式多文档MFC应用程序的缩略图预览和选项卡式缩略图。


(4)Windows 7 样式功能区
在Visual C++ 2010中创建的应用程序,可以拥有创建类似于Windows 7 样式功能区,您可以从几种Office样式功能区切换到Windows 7样式。如下图0 ]8 J# B( d6 J8 C  y- |! I

5 S" t(5)支持多点触控和DPI 识别
              增强的MFC 方便我们开发多点触控应用程序,在各种不同的触控事件发生时调用相应的消息,开发这样的应用程序,我们只需注册触控和手势事件。MFC默认实现高DPI的识别功能,因此,应用程序可以实现高DPI的屏幕,不会出现像素化或模糊现象。MFC 在内部缩放并更改字体和其他元素,以确保UI 在高 DPI 显示器上也一样清晰。9 b+ H; I  h! `: L
  增强后的MFC,本着对Window 7全面支持的态度,为我们能够开发出类似Window 7应用程序做好了准备,让华丽、吸人眼球的应用程序不再是Window 7的专属,我们也能。) R4 T! W# D/ I1 J
  重新启动管理器
  对于大多数的电脑用户来说,都遇到过这样的情况,由于应用程序的意外关闭或重新启动,将您花了很大功夫编写的文档化为乌有,这是很郁闷的事情。在Office2007中就增加了自动保存功能,一旦遇到上述情况,可以恢复到发生意外情况时的状态,不至于让自己工作成果因为故障而丢失。在Visual C++ 2010中增加的重新启动管理器,就是类似这方面的应用。
  重新启动管理器是 Windows Vista 中引入的一项有用的功能,可以使应用程序在终止前执行保存的操作。应用程序可以调用此功能,然后在重新启动时还原其状态。在Visual C++ 2010中,我们可以在 MFC 应用程序中充分利用重新启动管理器,更妥善地处理应用程序崩溃和重新启动的情况。如何使用重新启动管理器呢?分两种情况:一是向现有的应用程序中添加重新启动管理器;二是在新创建的MFC 应用程序中使用此功能。
    一、 向现有的应用程序中添加重新启动管理器的功能+ b$ R# P. I5 p: Z
  1. 打开现有的MFC应用程序。
  2. 打开主应用程序的源文件。默认情况下,此文件是与应用程序同名的 .cpp 文件。如RestartManagerDemo的主应用程序源文件是 RestartManagerDemo.cpp。
   3. 查找主应用程序的构造函数。例如,如果项目RestartManagerDemo,则构造函数为 CRestartManagerDemoApp:: CRestartManagerDemoApp()。
   4. 添加以下加亮的代码行到构造函数中。
 

6 N: @: r  w  Z

$ E' J5 J% X( U) t; P
  5. 确保应用程序的InitInstance方法调用其父级 InitInstance 方法:CWinApp::InitInstance 或 CWinAppEx::InitInstance。; I# u5 E& R, n- G! J3 Z
  6. 编译并运行应用程序。 

  二、 在新创建的MFC 应用程序中添加重新启动管理功能,只需要在MFC应用程序向导中勾选相应的功能项即可。见下图



各选项的功能列表:

选项名称    

功能说明

在构造函数中自动添加的代码

支持重新启动管理器

表示您的应用程序将仅仅支持重新启动功能。换句话说,您的用程序可以在升级或者崩溃之后重新启动,但是无法自动打开未关闭的文档,无法对数据进行恢复。                                                

m_dwRestartManagerSupportFlags = 
qAFX_RESTART_MANAGER_SUPPORT_RESTART;

重新打开以前打开的文档

表示您的应用程序可以在重启之后重新打开之前打开的文档,也就是自动恢复到当前的工作状态

m_dwRestartManagerSupportFlags = 
 TAFX_RESTART_MANAGER_SUPPORT_RESTART_ASPECTS;

支持应用程序恢复

表示您的应用程序在重新启动后,不仅可以重新打开之前打开的文档,还会尝试恢复自动保存的文档

m_dwRestartManagerSupportFlags =
 qAFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;

  重新启动管理器的行为与应用程序的类型有关,如果是文档编辑器之类的应用程序,重新启动管理使应用程序器能够自动保存已经打开的文档的状态和内容,在程序异常的时候,能够保存运行时的数据,自动恢复到未发生异常时的情况,从而提高了程序的稳健性与可靠性。如果应用程序不是文档编辑器,则重新启动管理器将重新启动应用程序,但默认情况下无法保存应用程序的状态。
       在重新启动应用程序后,根据不同的应用程序,将会弹出一个任务对话框(Unicode版本)或者消息框(非Unicode版本),询问用户是否需要恢复自动保持的文档。如果用户选择“是”,那么自动保持的文档将被打开作为当前文档。如果用户选择“否”,那么用户最后保存的文档将被打开作为当前文档,同时自动保存的文档将被删除。
 重新启动管理器的加入,提高了程序的稳健性与可靠性,增强了用户体验。 

任务对话框; i9 r2 V: }' T! t, T& ]
  为了改善用户体验,在Visual C++ 2010中,您可以使用任务对话框(Task Dialog)代替了原先广泛使用的消息框(Message Box)。跟消息框相比,任务对话框不仅可以向用户显示消息,还可以显示自定义的按钮,命令行选项以及更加丰富的辅助信息等。新增的CTaskDialog类提供了很多简单实用的函数,我们可以轻松上手,使用任务对话框来改善应用程序的用户体验,使自己的应用程序的界面风格跟Vista系统保持一致。如下图:
0 z  _' g' `) D

1 L$ {+ ?! [, V1 a" L7 I
  在VC++ 6.0中,并不支持任务对话框,向用户显示消息,只能使用AfxMessageBox类,可以设置显示内容、图标和按钮样式。如下图



 在CTaskDialog之前,AfxMessageBox也是一种不错的选择,CTaskDialog为用户提供了全面的信息和操作方式,为用户做出准确选择提供足够的信息。
 小结0 q' k) A0 S5 _! O7 W, f5 o
  从以上三个方面可以看出,增强的MFC为程序员开发过程中提供了便利,为能够实现超酷、超炫的应用程序奠定基础,正是这些与Windows 7、Vista风格保存一致的应用程序,极大的增强了用户体验,使我们开发的应用程序不再只是功能方面的强大,用户体验也是我们努力的方向,Visual C++ 2010为我们的提高助有一臂之力。