在 Win32 API 中,PFTASKDIALOGCALLBACK 并不是一个独立的回调函数类型。然而,我认为你可能是指 PFTASKDIALOGCALLBACK 回调函数指针,它用于 Task Dialog 的自定义回调。

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