我已经工作了一段时间与常规的Windows Vista/7 TaskDialog一段时间,我想添加一些额外的功能(如自定义按钮和页脚),所以我需要使用TaskDialogIndirect 。在C#中使用TaskDialogIndirect
继MSDN文档TaskDialogIndirect,我得到这个签名:
[DllImport("comctl32.dll",CharSet = CharSet.Unicode,EntryPoint="TaskDialogIndirect")]
static extern int TaskDialogIndirect (TASKDIALOGCONFIG pTaskConfig, out int pnButton, out int pnRadioButton, out bool pfVerificationFlagChecked);
的TASKDIALOGCONFIG类如下所示:
public class TASKDIALOGCONFIG
{
public UInt16 cbSize;
public IntPtr hwndParent;
public IntPtr hInstance;
public String dwFlags;
public String dwCommonButtons;
public IntPtr hMainIcon;
public String pszMainIcon;
public String pszMainInstruction;
public String pszContent;
public UInt16 cButtons;
public TASKDIALOG_BUTTON pButtons;
public int nDefaultButton;
public UInt16 cRadioButtons;
public TASKDIALOG_BUTTON pRadioButtons;
public int nDefaultRadioButton;
public String pszVerificationText;
public String pszExpandedInformation;
public String pszExpandedControlText;
public String pszCollapsedControlText;
public IntPtr hFooterIcon;
public IntPtr pszFooterText;
public String pszFooter;
// pfCallback;
// lpCallbackData;
public UInt16 cxWidth;
}
的TASKDIALOG_BUTTON实现:
public class TASKDIALOG_BUTTON
{
public int nButtonID;
public String pszButtonText;
}
我不完全确定我是否在这条正确的轨道上。有没有人直接通过WinAPI从托管代码中使用TaskDialogIndirect(没有VistaBridge或Windows API代码包)?我很好奇可能的实现,以及回调声明(我不完全确定如何实现TaskDialogCallbackProc)。
PS:我正在寻找一个直接的WinAPI实现,而不是通过一个包装。
我看过它,但作为一个包装,它包含了很多额外的代码,在我的情况下是不需要的。我想要做的是,在这一点上,创建一个简单的任务对话框,其中包含一些自定义操作。 – 2010-04-27 17:35:22