CTaskDialog 与Visual Studio 2010 C++
2010-12-13 10:33
513 查看
CTaskDialog 与Visual Studio 2010 C++
首先让我自我介绍一下,我是Lukasz Chodorski,Visual C++ Libraries团队中的一名新软件设计工程师(SDE)。这次我给大家带来的是MFC库中的CTaskDialog消息框类,它包装了一组新的Windows API。CTaskDialog究竟是什么? 它是一个能根据您的需求易于客制化的类/组件。您可以在CTaskDialog中添加如下的元素: • 窗体的标题 • 应用程序图标 • 应用程序提示 • 内容 • 进度条 • 单选按钮 • 自定义按钮 • 展开/折叠按钮 • 可验证的复选框 • 页脚图标 • 页脚文本 • 普通按钮 正如你所看到的,这里有很多的配置选项可供选择。使用最简单的配置时,它的行为就像一个经典的消息框,但是在更多高级应用中它有进度条,自定义按钮或者单选按钮。它甚至可以在其上设置超链接或是建立简单的向导应用。当然,开发者可以使用MFC通常的执行机制来响应对话框中的事件。 CTaskDialog提供了像往常一样的方法用以创建和初始化控件。例如: CTaskDialog dlg(_T("A CTaskDialog presents information in a clear and consistent way."), _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(); 它创建了如下样式的窗体: 或者您也可以使用如下的函数进行创建: INT_PTR nResult = CTaskDialog::ShowDialog( _T("Don't spend to much time on code, write only one line and get your CTaskDialog!"), _T("Where do you like to go?"), _T("One line command"), IDS_RADIO_START, IDS_RADIO_START + 3, TDCBF_CANCEL_BUTTON); 注意这些新特性在Windows Vista系统才被引入,所以在编程时需要将_WIN32_WINNT宏定义为0x0600(标识Windows Vista)或更高。 当然,在targetver.h文件中默认值已经为Windows Vista。您应该注意到Windows提供了两个comctl32.dll库(版本5.x.x.x和6.x.x.x)。CTaskDialog需要版本6.x.x.x或更高,所以VC10需要在manifest文件中加入该配置。 当您运行时得到这样的错误:"不能定位xxx在动态链接库COMCTL32.DLL中"。这意味着您的操作系统在运行应用程序时使用了错误的动态链接库,通常是由于在manifest文件中使用了错误的assemblies配置(外部设置或内部设置中的一个)。 强制让Windows使用适合版本的动态库的方法是将如下的配置段加入到manifest文件中: <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> 由于版本低于Windows Vista的操作系统不支持TaskDialog的API,所以您需要使用CTaskDialog::IsSupported()方法来检查是否可以使用CTaskDialog对话框。通常是这样的结构: if (CTaskDialog::IsSupported()) { ... //call CTaskDialog } else MessageBox(); //调用经典的消息对话框 这里描述的特性是微软预发布软件Visual Studio 2010及.NET Framework 4.0社区技术预览版(CTP)中的一部分,您可以通过如下的网址进行下载和体验:http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814 这个使用了CTaskDialog的样例工程被放置在了Visual Studio 2010的样例文件夹中,希望通过这些介绍您能积极的使用CTaskDialog,同时欢迎您的反馈信息 谢谢! 下载CTaskDialog代码生成器 示例代码: //包含头文件afxtaskdialog.h CTaskDialog taskdialog( CString(), CString(), CString(), 0); //构造 taskdialog.SetWindowTitle( _T("标题栏文字") ); //对话框标题 taskdialog.SetMainInstruction( _T("主要说明(蓝)") ); //对话框主要说明 taskdialog.SetContent( _T("详细内容说明") ); //对话框详细内容 taskdialog.SetOptions( TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS);//对话框样式 //taskdialog.AddRadioButton( 3, _T("") ); //Radio button 1 可更改数字3 //taskdialog.AddRadioButton( 7, _T("") ); //Radio button 2 可更改数字7 //taskdialog.AddRadioButton( 4, _T("") ); //Radio button 3 可更改数字4 //taskdialog.AddCommandControl( 10, _T("") ); //command button 1 可更改数字10 //taskdialog.AddCommandControl( 20, _T("") ); //command button 2 可更改数字20 //taskdialog.AddCommandControl( 30, _T("") ); //command button 3 可更改数字30 //taskdialog.SetFooterText( _T("") ); //对话框页脚文字 //taskdialog.SetFooterIcon( MAKEINTRESOURCEW(-3) ); //页脚图标 //taskdialog.SetVerificationCheckboxText( _T("") ); //对话框确认复选框文本 taskdialog.SetMainIcon( MAKEINTRESOURCEW(-1) ); //主图标 INT_PTR nResult = taskdialog.DoModal(); // 显示模态对话框 |
相关文章推荐
- 微软Visual Studio 2010将给C++开发者更多关怀
- [C++学习历程]Visual Studio 2010 的HelloWorld
- Visual Studio 2010编译C++ 出现IntelliSense: 无法打开 源 文件 "stdafx.h"
- 非nmake方式Visual Studio C++ 2010 编译libevent
- Visual Studio 2010中的C++程序调用matlab程序代码 混合编程
- Visual Studio 2010 C++ 0x
- Visual Studio 2010中C++的四大变化(转)
- Visual Studio 2010 C++ 快捷键
- Visual Studio 2010中C++项目升级指南
- Visual Studio 2010 编译 MongoDB C++ Client Driver(看这里,终于解决了编译问题,谢谢大神的分享)
- Visual Studio 2010中C++并行构建调优
- Visual Studio 2010中C++的四大变化
- 在Visual Studio 2010中调试DLL工程的方法 (C++)
- Visual Studio 2010建模学习(十二) - C/C++代码的可视化
- 如何在Visual Studio 2010中使用C++“准”标准库 Boost 1.49.0
- Visual Studio 2010 C++ 属性设置基础
- Visual Studio 2010 C++ 工程文件解读
- Visual Studio 2010中C++的四大变化(转)
- 在windows7中,visual studioC++ 2010中 mschar插件的使用,MSCHRT20.OCX的注册,如何画曲线图、饼图
- Visual Studio 2010 编译 MongoDB C++ Client Driver