Einzelnen Beitrag anzeigen

Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#1

TaskDialogIndirect - Deklaration der Struktur

  Alt 15. Nov 2011, 10:43
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.
  Mit Zitat antworten Zitat