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号