增强的MFC
虽然大家都在说MFC过时了,但是,现在世界上还有很多MFC正在运行,也同样还有很多基于MFC的程序正在开发中。我们可以说随着.NET Framework等等新框架的推出,MFC不再是几乎唯一的选择,但是,随着Visual C++ Feature Pack的推出,MFC在界面开发方面的能力等到了大大增强,MFC也在与时俱进,远没有到过时淘汰的程度。在Visual Studio 2010中,除了之前随着Visual C++ Feature Pack发布的众多特性外,MFC又带来了两项重要的特性:
• 任务对话框CTaskDialog
为了改善用户体验,在Vista中,微软使用任务对话框(Task Dialog)代替了原先广泛使用的消息框(Message Box)。跟消息框相比,任务对话框不仅可以向用户显示消息,还可以显示自定义的按钮,命令行选项以及更加丰富的辅助信息等。新的CTaskDialog类提供了很多简单实用的函数,程序员们可以轻松上手,使用任务对话框来改善应用程序的用户体验,使自己的应用程序的界面风格跟Vista系统保持一致。下面这段简短的代码就创建了一个简单的任务对话框,来询问用户对任务对话框的态度:
_T("How much do you like CTaskDialog?"), _T("Sample CTaskDialog"), 0,
TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS , _T("I hope you like it!"));
dlg.AddCommandControl( 10, _T("&Use it!\nIt's the best dialog you can have!"));
dlg.AddCommandControl( 20, _T("&Maybe?\nDon't you want to try it?"));
dlg.AddCommandControl( 25, _T("&No way!\nI'm not going to use it!"));
dlg.AddRadioButton( 3, _T("Lots"));
dlg.AddRadioButton( 7, _T("A little"));
dlg.AddRadioButton( 4, _T("Not at all"));
dlg.SetMainIcon(TD_SHIELD_ICON);
dlg.SetFooterIcon(TD_INFORMATION_ICON);
INT_PTR nResult = dlg.DoModal();
图4 任务对话框
• Restart Manager Support
在新的Vista Studio 2010中,MFC程序开始支持重启管理器(Restart Manager)。重启管理器是Vista所引入的一个重要新特性,它可以在程序意外崩溃的时候,保护用户任何未保存的文档数据等。当我们的程序因为种种原因意外崩溃的时候,重启管理器可以重新启动应用程序并且可以让用户选择是否要恢复未保存的数据等。使用重启管理器,可以有效地降低我们数据丢失的风险,极大地改善程序的抗风险能力。
在Visual Studio 2010中,我们可以通过简单地在程序初始化的地方添加几行代码,就使得我们的应用程序具有重启管理器的功能。
Visual C++程序的发布与部署
新的Visual Studio 2010改变了依赖于Visual C++库的应用程序的发布方式。依赖于Visual C++库的应用程序不再需要Fusion (WinSxS) Manifest,这意味着当我们将应用程序部署到一个本地文件夹时,将不再需要众多的小Manifest,只需要复制MFC和C++运行时库mfc100u.dll和 msvcr100.dll这两个dll文件到Release文件夹就可以了。另外,Visual Studio 2010也同样支持之前的各种部署机制,例如合并模块(.msm)和VCRedist。这些旧有的方法将在System32目录下安装Visual C++库。总之,Visual C++程序的发布与部署将更加简单。关于具体的发布于部署过程,我们将在后面的文章中做更加详细的介绍。
对新的C++标准的支持以及在IDE方面的改进,就像Visual C++全新锻造的倚天剑和屠龙刀。倚天屠龙既出,谁与争锋!