CTaskDialog使用说明

CTaskDialog使用说明

2012.9.1 23:44 By Y-Z-F

QQ:976691141

C++高级群:194985494

当你不断的使用MessageBox来报错,或者自己编写一个窗口来报错等等.是否感觉前者界面太普通,后者太麻烦.

现在不同了,从Windows Vista开始有一种新的界面将要替换掉MessageBox让你的程序的提示更丰富.

下面我先给大家来一张整体的图:

现在我们开始介绍如何构造

CTaskDialog(

const CString& strContent, //对应4号区域的内容

const CString& strMainInstruction, //对应2号区域的内容

const CString& strTitle,//对应1 号区域的内容

int nCommonButtons = TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON,

int nTaskDialogOptions = TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS, const CString& strFooter = _T("") );

比如此列子中的使用方法如下:

CString Content(L"程序可能出现未有的情况\n请在规定时间内选择如何处理不然将自动处理"); CString MainText(L"运行过程中出现故障\n此操作可能会修复此问题。");

CString Title(L"故障处理");

CTaskDialog taskdialog(Content,

MainText,

Title);

接下来将告诉你如何在后面修改 4 , 2 , 1 号区域的内容:

修改4号区域内容使用的成员函数:

void SetContent(

const CString& strContent

);

修改2号区域内容使用的成员函数:

void SetMainInstruction(

const CString& strInstructions

);

修改1号区域内容使用的成员函数:

void SetWindowTitle(

CString& strWindowTitle

);

现在介绍5 号区域的内容:

对于5号的内容不是打开这个对话框就显示的,它属于额外的显示内容,

只有当用户点击才显示.

其增加或修改该处的成员函数为:

void SetExpansionArea(

const CString& strExpandedInformation,//为5 号区域的内容 const CString& strCollapsedLabel = _T(""),

const CString& strExpandedLabel = _T("")

);

在本程序的列子为:

taskdialog.SetExpansionArea(L"ExpansionText

href=\"https://www.360docs.net/doc/c318979999.html,/\">https://www.360docs.net/doc/c318979999.html,");

当然图上蓝色部分是网页的点击.

现在介绍3 号区域图标如何设置:

其成员函数为:

void SetMainIcon(

HICON hMainIcon

);

void SetMainIcon(

LPCWSTR lpszMainIcon

);

在本程序中的列子为:

taskdialog.SetMainIcon(LoadIcon(

GetModuleHandle(NULL),

MAKEINTRESOURCE(IDR_MAINFRAME)

));

6 号进度条的设置:

设置是否显示进度条:

void SetProgressBarMarquee(

BOOL bEnabled = TRUE,//是否显示进度条,默认为显示

int nMarqueeSpeed = 0 //进度条的速度

);

设置进度条范围

void SetProgressBarRange(

int nRangeMin, //最小数值

int nRangeMax //最大数值

);

设置进度条当前的进度值

void SetProgressBarPosition(

int nProgressPos //指定的位置

);

设置进度条的状态

void SetProgressBarState(

int nState = PBST_NORMAL //默认为正常为绿色

);

可选值:

PBST_ERROR

进度条的颜色会变成红色

PBST_PAUSED

进度条的颜色会变成黄色

在本程序的列子为:

taskdialog.SetProgressBarMarquee();

taskdialog.SetProgressBarRange(0,100);

taskdialog.SetProgressBarPosition(0);

7 号Radio按钮设置:

增加Radio按钮

void CTaskDialog::AddRadioButton(

int nRadioButtonID, //指定该按钮的ID

const CString& strCaption, //指定该按钮的内容

BOOL bEnabled = TRUE //指定该按钮是否可用

);

按下Radio按钮

void ClickRadioButton(

int nRadioButtonID //指定的按钮ID

) const;

获得当前选择的Radio按钮ID号

一般用于窗口销毁后获得数据用

int GetSelectedRadioButtonID() const;

删除所有Radio 按钮

void RemoveAllRadioButtons();

设置Radio按钮状态

void SetRadioButtonOptions(

int nRadioButtonID, //按钮ID

BOOL bEnabled //是否使用1 为使用0 为不使用);

设置默认被选择的Radio按钮

void SetDefaultRadioButton(

int nRadioButtonID //按钮ID

);

在本程序的列子:

taskdialog.AddRadioButton(0x1,L"RadioButton1"); taskdialog.AddRadioButton(0x2,L"RadioButton2");

8 号按钮的设置:

增加按钮:

void AddCommandControl(

int nCommandControlID, //按钮的ID

const CString& strCaption, //按钮的内容

BOOL bEnabled = TRUE, //是否使用按钮

BOOL bRequiresElevation = FALSE //如果设置为TRUE 则会显示为: );

点击按钮:

void ClickCommandControl(

int nCommandControlID //按钮的ID

) const;

获得被按下的按钮ID:

一般用于窗口销毁后获得数据

int GetSelectedCommandControlID() const;

删除所有按钮

void RemoveAllCommandControls();

设置按钮状态

void SetCommandControlOptions(

int nCommandControlID, //按钮ID

BOOL bEnabled, //是否可用

BOOL bRequiresElevation = FALSE //如果为TRUE 则显示为);

设置默认的按钮

void SetDefaultCommandControl(

int nCommandControlID //按钮ID

);

在本程序的列子:

taskdialog.AddCommandControl(0x4,L"Button1");

taskdialog.AddCommandControl(0x8,L"Button2\nCareless",1,1);

9 号按钮的设置:

设置或增加:

void SetCommonButtons(

int nButtonMask, //需要设置的按钮标志

int nDisabledButtonMask = 0, //禁用的按钮标志

int nElevationButtonMask = 0 //要高亮的按钮标志

);

相关标志如下:

TDCBF_OK_BUTTON

对应“确定”按钮

TDCBF_CANCEL_BUTTON

对应“取消”按钮

TDCBF_RETRY_BUTTON

对应“重试”按钮

TDCBF_CLOSE_BUTTON

对应“关闭”按钮

设置按钮的样式

void SetCommonButtonOptions(

int nDisabledButtonMask, //需要禁用的按钮标志如图的确定按钮

int nElevationButtonMask = 0 //需要高亮的按钮标志

);

在本程序的列子:

taskdialog.SetCommonButtons(TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON|TDCBF_RETRY_BUTTON | TDCBF_CLOSE_BUTTON );

taskdialog.SetCommonButtonOptions(TDCBF_OK_BUTTON);

10 号Check设置:

设置Check的文本并显示

void SetVerificationCheckboxText(

CString& strVerificationText

);

设置Check是否选中

void SetVerificationCheckbox(

BOOL bChecked

);

获得Check的状态(就是是否选上)

BOOL GetVerificationCheckboxState() const;

在本程序的例子为:

taskdialog.SetVerificationCheckboxText(L"Check1");

taskdialog.SetVerificationCheckbox(1);

最后介绍11 和12 的设置:

设置12 显示的图标

void SetFooterIcon(

HICON hFooterIcon

);

void SetFooterIcon(

LPCWSTR lpszFooterIcon

);

设置11 显示的文本

void SetFooterText(

const CString& strFooterText

);

在本程序的例子:

taskdialog.SetFooterIcon(LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MAINFRAME));

taskdialog.SetFooterText(L"FooterText");

其他的成员函数:

获得属性:

int GetOptions() const;

设置属性:

void SetOptions(

int nOptionFlag

);

如果要现实

字符串可以使用网络链接

请或上TDF_ENABLE_HYPERLINKS 标志

当前系统是否支持此窗口

static BOOL IsSupported();

测试Radio按钮是否可用

BOOL IsRadioButtonEnabled(

int nRadioButtonID

) const;

设置窗口宽度

void SetDialogWidth(

int nWidth = 0

);

最后是显示此对话窗口

INT_PTR DoModal (

HWND hParent = ::GetActiveWindow()

);

注意此函数的返回的值除了可以为那四个按钮

如果用户按了8 号的按钮将返回对应按钮的ID号

相关文档
最新文档