你好,
我叫Damien Watkins,是Visual C++团队的项目经理。今天,我想我会为我的TechEd Europe课程发布“概述脚本”——这样那些不能参加的人可以在家里自己尝试。我的演讲是关于我们在visualstudio2010中添加的新MFC特性。
在我们开始之前,我想指出Pat Brenner也在做一些关于新MFC功能的Channel 9视频,您可以在这里找到前三个视频(并在将来继续关注更多):
1. Pat Brenner:Visual Studio 2010–MFC和Windows 7 (一个25分钟的访谈,介绍新MFC功能的原理和设计)
2. MFC:实现预览、缩略图和搜索过滤的处理程序 (3分钟“如何”风格视频)
3. MFC:将应用程序与Windows重启管理器集成 (5分钟“如何”风格视频)
创建我的解决方案/应用程序
首先,您可以作为管理员运行VisualStudio2010(VS2010)。 这是注册“文件类型处理程序”所必需的,以便为您的文档类型提供预览、搜索和缩略图支持。或者,可以作为普通用户运行VS2010,并在提升的命令提示符中运行命令来注册文件类型处理程序。
在启动VS2010(并以管理员身份执行)之后,您将创建一个新的MFC应用程序(File->new->Project或CONTROL+SHIFT+n)。在新建项目向导中,您将选择MFC应用程序并输入项目名称。在我下面的示例中,我输入了“VCBlogDemo”,但您可以使用任何您喜欢的名称。但是,如果您使用与我相同的名称,当我引用特定的类、方法等时,将更容易按照下面的说明进行操作。然后单击“确定”。另外,除非我另有说明,否则我总是在任何屏幕上选择默认值。
现在,通过MFC应用程序向导对话框,选择/启用以下功能:
1. 在“概述”页面上,只需单击“下一步”。
2. 在“应用程序类型”页面上,将项目样式设置为Office(我将进一步显示一些功能区功能,因此我需要基于功能区的UI),然后单击“下一步”。
3. 在“复合文档支持”页面上,只需单击“下一步”。
4. 在“文档模板属性”页上:
· 添加文件扩展名,我进入演示ms
· 我还添加了对预览、缩略图和搜索处理程序的支持,在它们被启用后单击各种按钮。
· 检查屏幕截图您有相同的设置:
· 然后单击“下一步”。
5. 在“数据库支持”页面上,只需单击“下一步”。
6. 在“用户界面功能”页面上,只需单击“下一步”。
7. 在“高级功能”中,请注意已选中“支持重新启动管理器”,然后单击“下一步”。
8. 在“生成的类”页面上:
· 将CVCBlogDemoView类的基类更改为CEditView。这样做的原因是这个类的默认实现可以用来突出显示预览、搜索和缩略图功能,而不需要开发人员编写任何额外的代码。您的屏幕现在应该如下所示:
· 然后单击Finish
一旦向导完成,作为一个快速的健全性检查,我将我的“解决方案配置”更改为“发布”,构建解决方案(F7)并在没有调试的情况下启动应用程序(CONTROL+F5)–我基本上是在看到它运行后关闭它。然后我回到VS2010。
配置重新启动管理器和自动保存
默认情况下,自动保存间隔为5分钟,但我将把间隔设置为15秒,而不是在启动应用程序后等待5分钟来演示此功能。为此,我首先在CVCBlogDemoApp构造函数中找到启用restartmanager支持的命令,然后在它后面立即添加一行。然后,构造函数将有以下两行:
mu dwRestartManagerSupportFlags=AFXu RESTARTMANAGERu支持所有方面;
m_nAutosaveInterval=15000;//在前一行之后添加此行
编辑功能区
然后可以切换到资源视图,转到VCBlogDemo项目并展开VCBlogDemo.rc。然后展开Ribbon资源并双击IDRU Ribbon资源。接下来,我从工具箱中拖出一个面板,把它贴在缎带上。我把面板的标题改为“重启”。然后我把工具箱里的一个按钮拖到重启面板上。然后我把按钮的ID改成了IDu CRASHME,标题改成了CRASHME。
返回MFC类向导!
现在您需要为功能区中的“CrashMe”按钮添加事件处理程序。在这一点上,是时候欢迎一个老朋友,类向导回来了。点击CONTROL-SHIFT-X(与原版不同的键绑定),向导出现。很难想象一个更常见的功能比返回的向导-我们真的希望你喜欢使用它!
现在将“Class name”字段改为CVCBlogDemoApp,并在Commands选项卡的search框中输入IDu CRASHME。类向导屏幕如下所示:
接下来,选择命令并单击“添加处理程序”,然后选择更新命令并单击“添加处理程序”。 命令处理程序将使我们的应用程序崩溃,因此我们可以看到restartmanager功能正在工作。UPDATE_命令处理程序将禁用“CrashMe”按钮,直到我们的应用程序已运行超过1分钟,这样Windows Restart Manger机器才会启用(因此自动保存超时至少已过期一次。)现在使用“Edit Code”按钮添加以下代码(当然,您可以添加任何逻辑来启用/禁用按钮并终止应用程序–下面的代码是我能想到的最简单和最受约束的代码–但是它不是一个良好编码实践的示例):
演示我们的应用程序
因此,现在重建解决方案并启动应用程序(请记住,它应该是为“Release”而构建的)。当您启动应用程序而不进行调试(CONTROL+F5)时,您将注意到“CrashMe”按钮最初是禁用的。接下来我将再打开两个文档(键入CONTROL-N两次就可以了)。
1. 在“文档一”中,我将键入“此文档已保存”,然后单击“保存”图标并将文档保存在“文档”文件夹中。
2. 在文档2中,我将键入“This document is not saved”(我不会保存它)。
3. 在文件三,我会键入“这句话是保存”,并点击保存图标,并保存在文件文件夹的文件。下一步我将在第二行键入“This sense is not save”(我不会保存它)。
Windows 7任务栏
为了让自动保存功能能够工作,此时您可以将鼠标悬停在新的Windows7任务栏中的应用程序图标上。注意,每个文档都有一个单独的选项卡(尽管在本例中,写入的内容非常小),并且您可以看到文档的实时视图—例如,注意活动文档中闪烁的光标(无论哪一个恰好是)
演示重新启动管理器
现在,我们可以通过单击启用的“CrashMe”按钮使应用程序崩溃。在花了几秒钟重新启动之后,您将看到一个新的CTaskDialog的好例子,以及自动恢复工作的选项。
我通过单击“恢复自动保存的文档”选项来恢复所有内容。 现在,我将鼠标悬停在任务栏中的应用程序图标上,当出现文档预览时,单击红色的X开始关闭文档。您会注意到一个已经保存的文档是如何被关闭的,一个已经保存的文档 但随后又被更新了遗嘱 如果启用“保存”对话框,则从未保存过的文档将启用“另存为”对话框。
浏览器交互
最后,我在documents文件夹中启动Explorer,在Search字段中键入“saved”,然后选择一个演示ms文件,这样我们就可以看到图标、预览和搜索功能。
支持高DPI
对于那些有几分钟时间的人,在这个阶段你可以改变你的屏幕分辨率,或者重新启动或者注销(取决于你的操作系统要求),看看MFC是如何增加对高DPI显示的支持的。
摘要
如您所见,使用MFC的新Windows功能非常简单。再加上类向导的返回和功能区编辑器的添加,我们希望MFC开发人员会对即将发布的visualstudio2010感到兴奋。
您可能注意到的另一点是,Ribbon设计器与BCGSoft设计器非常相似。同样,与vs2008sp1中的MFC扩展(又称MFC功能包)一样,我们在一些新MFC功能的实现方面得到了BCGSoft的帮助。这就是我的欧洲技术讲座的概述。
谢谢,
达米安