![]() |
TaskDialogIndirect - Deklaration der Struktur
Hallo,
ich versuche gerade, die neuen TaskDialoge in ein Programm einzubauen. Dabei haben mir die Ausführungen von Michael ![]() MSDN:
Code:
Michael:
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;
Delphi-Quellcode:
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.
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; Hat das einen tieferen Sinn oder spielt es einfach nur keine Rolle? Vielleicht kann mich ja jemand "erleuchten"... .sundance. |
AW: TaskDialogIndirect - Deklaration der Struktur
Zum einen geht es nicht anders, da Delphi variante Teile von Records nur am Schluss zulässt.
Zum andern ist es auch egal, da das entstehende Speicherlayout identisch ist. |
AW: TaskDialogIndirect - Deklaration der Struktur
Auf den ersten Blick sieht es erstmal "gleich" aus.
Funktioniert denn irgendwas nicht? Das Problem ist, daß man dähmlicher Weise bei diesen
Delphi-Quellcode:
-Abschnitten das
case
Delphi-Quellcode:
vergessen hat, man kann also soeinen Abschnitt nicht mehr vorzeitig/manuell schließen, so wie es in C möglich ist.
end
Darum diese "eigenartige" Verschachtelung. Leider wird man diesen Bug wohl niemals beheben können, da sonst die alten Quellcodes nicht mehr kompatibel sind. (es sei denn man erfindet hier ein anderes "end", wie z.B. caseend, welches man dafür verwenden würde ... aber auf mich hört ja keiner) [edit] diese faule RedBox immer :warn: |
AW: TaskDialogIndirect - Deklaration der Struktur
Zitat:
Zitat:
Kennt ihr (oder ein anderer Leser) vielleicht auch eine ähnlich gute Beschreibung (mit Delphi-Implementation) der Vista/Win7 Open/Save-Dialoge? Es gibt ja dort auch (ähnlich wie bei TaskDialogIndirect) die Möglichkeit, die Dialoge um weitere Controls oder Eigenschaften zu erweitern... .sundance. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz