Hallo,
ich versuche gerade, die neuen TaskDialoge in ein Programm einzubauen. Dabei haben mir die Ausführungen von Michael
hier sehr geholfen. Dabei ist mir aufgefallen, dass sich die Deklarationen der TaskDialogConfig-Struktur von der bei
MSDN unterscheidet:
MSDN:
Code:
typedef struct _TASKDIALOGCONFIG {
UINT cbSize;
HWND hwndParent;
HINSTANCE hInstance;
TASKDIALOG_FLAGS dwFlags;
TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons;
PCWSTR pszWindowTitle;
union {
HICON hMainIcon;
PCWSTR pszMainIcon;
};
PCWSTR pszMainInstruction;
PCWSTR pszContent;
UINT cButtons;
const TASKDIALOG_BUTTON *pButtons;
int nDefaultButton;
UINT cRadioButtons;
const TASKDIALOG_BUTTON *pRadioButtons;
int nDefaultRadioButton;
PCWSTR pszVerificationText;
PCWSTR pszExpandedInformation;
PCWSTR pszExpandedControlText;
PCWSTR pszCollapsedControlText;
union {
HICON hFooterIcon;
PCWSTR pszFooterIcon;
};
PCWSTR pszFooter;
PFTASKDIALOGCALLBACK pfCallback;
LONG_PTR lpCallbackData;
UINT cxWidth;
} TASKDIALOGCONFIG;
Michael:
Delphi-Quellcode:
TASKDIALOGCONFIG = packed record
cbSize : uint;
hwndParent : HWND;
hInstance : longword;
dwFlags : dword;
dwCommonButtons : dword;
pszWindowTitle : PWideChar;
case integer of
0 : (hMainIcon : HICON);
1 : (pszMainIcon : PWideChar;
pszMainInstruction : PWideChar;
pszContent : PWideChar;
cButtons : uint;
pButtons : pointer;
iDefaultButton : integer;
cRadioButtons : uint;
pRadioButtons : pointer;
iDefaultRadioButton : integer;
pszVerificationText,
pszExpandedInformation,
pszExpandedControlText,
pszCollapsedControlText : PWideChar;
case integer of
0 : (hFooterIcon : HICON);
1 : (pszFooterIcon : PWideChar;
pszFooterText : PWideChar;
pfCallback : pointer;
lpCallbackData : pointer;
cxWidth : uint;));
end;
Wenn ich das recht verstehe (meine C-Kenntnisse sind ein wenig angestaubt...) umfassen die beiden unions bei
MSDN nur die beiden Elemente HICON und PCWSTR (also 2 x 32 Bit), während die Delphi-Implementation unterschiedlich große Bereiche zusammenfasst.
Hat das einen tieferen Sinn oder spielt es einfach nur keine Rolle?
Vielleicht kann mich ja jemand "erleuchten"...
.sundance.