AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Entwicklung für Vista und XP

Ein Thema von choose · begonnen am 21. Jul 2006 · letzter Beitrag vom 3. Apr 2007
 
MathiasSimmack
(Gast)

n/a Beiträge
 
#11

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 17:08
Zitat von choose:
Task Dialog
Mal technisch: Ich sitze gerade hier mit Vista und Delphi 5. Auf die UI muss ich verzichten, aber der Kommandozeilencompiler geht. Die einfache Variante des Dialogs, "TaskDialog", habe ich hinbekommen:
Delphi-Quellcode:
unit Vista;

interface;

const
  TD_WARNING_ICON = -1;
  TD_ERROR_ICON = -2;
  TD_INFORMATION_ICON = -3;
  TD_SHIELD_ICON = -4;

  // TASKDIALOG_COMMON_BUTTON_FLAGS
  TDCBF_OK_BUTTON = $0001; // selected control return value IDOK
  TDCBF_YES_BUTTON = $0002; // selected control return value IDYES
  TDCBF_NO_BUTTON = $0004; // selected control return value IDNO
  TDCBF_CANCEL_BUTTON = $0008; // selected control return value IDCANCEL
  TDCBF_RETRY_BUTTON = $0010; // selected control return value IDRETRY
  TDCBF_CLOSE_BUTTON = $0020; // selected control return value IDCLOSE

  function TaskDialog(hwndParent: HWND; hInstance: longword;
    pszWindowTitle: PWideChar; pszMainInstruction : PWideChar;
    pszContent: PWideChar; dwCommonButtons: dword; pszIcon : PWideChar;
    var pnButton: integer): HRESULT; stdcall;

implementation

const
  comctl32 = 'comctl32.dll';

function TaskDialog; external comctl32;

end.
Im Original ist die Deklaration der Buttons eigentlich vom enum-Typ, aber egal. Das funktioniert auch erst mal so. Merkwürdig finde ich das mit den Symbolen. Hier mal die Originaldeklaration der Funktion
Code:
WINCOMMCTRLAPI HRESULT WINAPI TaskDialog(__in_opt HWND hwndParent, __in_opt HINSTANCE hInstance, __in_opt PCWSTR pszWindowTitle, __in_opt PCWSTR pszMainInstruction, __in_opt PCWSTR pszContent, TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons, __in_opt PCWSTR pszIcon, __out_opt int *pnButton);
PCWSTR ist doch, IMHO, ein PWideChar, oder? Demzufolge müsste meine Delphi-Deklaration von oben ja korrekt sein. Klappt nur nicht. Versuche ich ein Symbol zu laden, dann sehe ich die Box überhaupt nicht. Bisher klappt es nur mit nil:
Delphi-Quellcode:
if (TaskDialog(0, 0, 'Test TaskDialog', 'So eine etwas dickere Überschrift',
      'Dies ist der eigentliche Inhalt.', TDCBF_YES_BUTTON or TDCBF_NO_BUTTON or
      TDCBF_CANCEL_BUTTON, nil, i) = S_OK) then
begin
  case i of
    IDYES:
      MessageBox(0, 'Ja', nil, 0);
    IDNO:
      MessageBox(0, 'Nein', nil, 0);
    IDCANCEL:
      MessageBox(0, 'Abbrechen', nil, 0);
  end;
end;
An sich sollte aber auch
(TaskDialog(0, 0, { ... } MAKEINTRESOURCEW(TD_INFORMATION_ICON), i) klappen. Wo also liegt der Fehler?



@André: Wenn es für dein Programm einen guten Grund gibt, einen komplett durchsichtigen Hintergrund zu nutzen, dann nur zu. Andernfalls solltest du erst mal ausprobieren, wie das aussieht, was andere dazu sagen und die Sache dann wieder vergessen. Nichts für ungut, aber bei den Gadgets macht das noch halbwegs Sinn. Die Startleiste ist ja auch transparent.



PS: Aaaah, Problem (wieder mal ) selbst gelöst. Die Icon-Werte waren falsch. Und das aus der Headerdatei des Windows SDK Egal:
Delphi-Quellcode:
  TD_ICON_BLANK       =   100;
  TD_ICON_WARNING    =   101;
  TD_ICON_QUESTION    =   102;
  TD_ICON_ERROR       =   103;
  TD_ICON_INFORMATION    =   104;
  TD_ICON_BLANK_AGAIN    =   105;
  TD_ICON_SHIELD    =    106;
geht dann aber (s. neues Bild im Anhang).
Angehängte Grafiken
Dateityp: png taskdialog_178.png (30,1 KB, 242x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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