![]() |
Re: Entwicklung für Vista und XP
Zitat:
PS: Den Glas-Effekt im Clientbereich kannst du vergessen. Wer so was macht, der muss besch**** sein. :zwinker: Den Glas-Effekt würde ich wirklich nur auf die Kanten und Titelleiste des Fensters beschränken. Im Clientbereich hat das nichts zu suchen, und mir ist bisher in Vista noch kein Assistent oder sonst was begegnet, der ein durchscheinendes Panel besaß, auf dem Buttons sitzen, o.ä. |
Re: Entwicklung für Vista und XP
Noch ein PS:
Zitat:
![]() |
Re: Entwicklung für Vista und XP
Zitat:
![]() |
Re: Entwicklung für Vista und XP
Hallo Mathias,
Zitat:
|
Re: Entwicklung für Vista und XP
Zitat:
![]() ![]() |
Re: Entwicklung für Vista und XP
Zitat:
|
Re: Entwicklung für Vista und XP
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
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
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.
Code:
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:
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);
Delphi-Quellcode:
An sich sollte aber auch
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;
Delphi-Quellcode:
klappen. Wo also liegt der Fehler?
(TaskDialog(0, 0, { ... } MAKEINTRESOURCEW(TD_INFORMATION_ICON), i)
@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. :lol: Nichts für ungut, aber bei den Gadgets macht das noch halbwegs Sinn. Die Startleiste ist ja auch transparent. PS: Aaaah, Problem (wieder mal :stupid:) selbst gelöst. Die Icon-Werte waren falsch. Und das aus der Headerdatei des Windows SDK :roll: Egal:
Delphi-Quellcode:
geht dann aber (s. neues Bild im Anhang).
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; |
Re: Entwicklung für Vista und XP
Liste der Anhänge anzeigen (Anzahl: 1)
Am "TaskDialogIndirect" sitze ich gerade (s. Bild im Anhang). Aber damit mache ich morgen weiter. Der Code ist fertig. Ich muss mir nur noch angucken, was für Spielchen man damit noch so alles machen kann. :stupid:
|
Re: Entwicklung für Vista und XP
Hallo Mathias,
das sieht ja schon richtig gut aus! Wie sieht im Augenblick Dein Entwicklungszyklus aus? Codieren unter XP und unter Vista laufen lassen oder tatsächlich in der Konsole kompilieren und mit Notepad entwickeln? Du hast nicht zufällig vor, die Ergebnisse in Form einer Funktionssammlung mit Delphi-Typen und etwas Komfort zur Verfügung zu stellen, oder? |
Re: Entwicklung für Vista und XP
Die Deklaration vom ersten Dialog, "TaskDialog", hast du ja bereits. Der läuft wirklich nur unter Vista, und ein Manifest ist zwingend erforderlich, sonst kommt auch unter Vista die Meldung, die Funktion könne nicht gefunden werden.
Der erste Dialog war nicht so tragisch. Etwas komplizierter war das Record (unser Luckie würde "Struktur" sagen :stupid:) für "TaskDialogIndirect". Aber wie du im Bild sehen kannst, hast du da auch mehr Möglichkeiten. Ich schraube gerade eine kleine Demo zusammen, die beide Dialoge aufruft. Ich muss noch ein paar Sachen testen, damit ich auch weiß wovon ich rede, und dann erscheint das ganze als Artikel inkl. Quellcode. btw, Delphi 5 läuft jetzt auch unter Vista. Nur am Anfang kommt die Meldung, irgendein Verzeichnis kann nicht umbenannt werden. Aber damit kann ich leben. Ich brauche es eh nur für Notfälle, falls ich mal direkt unter Vista kompilieren will. Ansonsten, ehrlich gesagt, hätte ich mir Delphi da nicht mehr installiert. :oops: Ich hätte nicht gedacht, das mal zugeben zu müssen, aber ich muss mich echt wieder in Delphi eingewöhnen. Bei CSharp hätte ich dafür schon eine NativeMethods-Klasse zusammengeschraubt. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 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