PFTASKDIALOGCALLBACK 的原型如下:
typedef HRESULT (CALLBACK *PFTASKDIALOGCALLBACK)(
HWND hwnd,
UINT msg,
WPARAM wParam,
LPARAM lParam,
LONG_PTR lpRefData
);
此回调函数通常在创建 Task Dialog 时传递给 TaskDialogIndirect 函数。它允许你处理 Task Dialog 中的各种事件,例如按钮点击、超链接点击等。
参数说明:
- hwnd: Task Dialog 的窗口句柄。
- msg: 指定回调函数接收的消息类型。
- wParam 和 lParam: 用于传递消息相关的参数。
- lpRefData: 用于传递额外的自定义数据。
回调函数的返回值是 HRESULT 类型,通常为 S_OK 表示成功,或其他错误代码表示失败。
以下是一个简单的示例,演示了如何创建 Task Dialog 并使用自定义回调函数:
#include <Windows.h>
#include <CommCtrl.h>
HRESULT CALLBACK MyTaskDialogCallback(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, LONG_PTR lpRefData)
{
switch (msg)
{
case TDN_BUTTON_CLICKED:
// 按钮被点击
MessageBox(hwnd, L"Button Clicked!", L"Callback", MB_OK | MB_ICONINFORMATION);
break;
case TDN_HYPERLINK_CLICKED:
// 超链接被点击
MessageBox(hwnd, L"Hyperlink Clicked!", L"Callback", MB_OK | MB_ICONINFORMATION);
break;
}
return S_OK;
}
int main()
{
TASKDIALOGCONFIG config = { sizeof(TASKDIALOGCONFIG) };
config.pszWindowTitle = L"Sample Task Dialog";
config.pszMainIcon = TD_INFORMATION_ICON;
config.pszMainInstruction = L"Hello, World!";
config.pszContent = L"This is a sample Task Dialog with a custom callback.";
config.dwCommonButtons = TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON;
config.pfCallback = MyTaskDialogCallback;
int nButton;
TaskDialogIndirect(&config, &nButton, NULL, NULL);
return 0;
}
请注意,Task Dialog 相关的功能通常需要使用 #include <CommCtrl.h> 头文件。上面的代码示例中,MyTaskDialogCallback 函数会在按钮点击或超链接点击时被调用,你可以根据需要处理不同的消息类型。
转载请注明出处:http://www.zyzy.cn/article/detail/24871/Win32 API/Commctrl.h/PFTASKDIALOGCALLBACK