Entwickler-Ecke
Windows API - Vista TaskDialog und Delphi
uko - Mo 04.12.06 14:42
Titel: Vista TaskDialog und Delphi
Hallo,
Ich versuche gerade, unter Delphi 7 den neuen TaskDialog von Vista zum Laufen zu bringen. Ich kenn zwar die Komponente von TMS und deren Artikel dazu, aber aus irgendeinem Grund funktionieren die bei mir nicht. Ich bekomme immer die falschen Icons im Dialog (Sterne, Dokument, ... anstatt Fragezeichen, Ausrufezeichen).
Hat hier schon mal jemand eine funktionierende Variante zustande gebracht? Oder eine Codefragment, wie man den neuen Taskdialog richtig ansprechen muß?
Meine Entwicklungsumgebung: D7 Prof unter Win2000 mit TMS Taskdialog 1.0.4
Grüsse,
Ulrich
uko - Mo 04.12.06 15:23
Danke für den Tip. Leider funktioniert die Demo des Artikels auch nicht und die Icons passen wieder nicht.
Ich hab es mit der vorkompilierten Exe und dem mitgelieferten Manifest probiert. Anstatt dem Fragezeichen bei 'Exception auslösen' bekomme ich ein Dokumentbildchen und anstatt dem FehlerIcon ein Icon ähnlich dem für Komponentendienste (in W2000).
Das Vista (RTM / Ultimate / Deutsch) hab ich heute morgen frisch auf einem Testrechner aufgesetzt und noch keinerlei sonstige Software drauf installiert.
Das gleiche Problem hab ich auch in einer VM mit Vista RC2.
grüsse,
Ulrich
uko - Di 05.12.06 11:28
Hallo,
könnte bitte mal jemand das angehängte Testprogramm (in exchange.zip) unter Vista laufen lassen und prüfen, ob die Icons der Dialoge richtig angezeigt werden?! (Button 'dynamic call')
Danke,
Ulrich
Delete - Di 05.12.06 14:52
nope, geht nicht unter der RTM (connect-image).
MS hat die Deklaration der IDI_xxx verändert. Die aktuellen Wertte bekommst du aus dem WindowsSDK (Winuser.h). Nachdem ich die Werte geändert habe geht es wieder.
uko - Di 05.12.06 15:13
Könntest Du mal Code von Dir posten, damit ich es mit meinem Zeug vergleichen kann? Wenn ich nicht das völlig falsche SDK gekriegt hab, dann ist in der WinUser.h nämlich nur das IDI_SHIELD (32518) dazu gekommen, die anderen Werte aber gleich geblieben!
Danke,
Ulrich
Delete - Di 05.12.06 15:35
dann hast du ein älteres SDK und nicht das SDK Build 6000.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| #ifndef NOICONS
#ifdef RC_INVOKED #define IDI_APPLICATION 32512 #define IDI_HAND 32513 #define IDI_QUESTION 32514 #define IDI_EXCLAMATION 32515 #define IDI_ASTERISK 32516 #if(WINVER >= 0x0400) #define IDI_WINLOGO 32517 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0600) #define IDI_SHIELD 32518 #endif /* WINVER >= 0x0600 */ #else #define IDI_APPLICATION MAKEINTRESOURCE(32512) #define IDI_HAND MAKEINTRESOURCE(32513) #define IDI_QUESTION MAKEINTRESOURCE(32514) #define IDI_EXCLAMATION MAKEINTRESOURCE(32515) #define IDI_ASTERISK MAKEINTRESOURCE(32516) #if(WINVER >= 0x0400) #define IDI_WINLOGO MAKEINTRESOURCE(32517) #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0600) #define IDI_SHIELD MAKEINTRESOURCE(32518) #endif /* WINVER >= 0x0600 */ #endif /* RC_INVOKED */
#if(WINVER >= 0x0400) #define IDI_WARNING IDI_EXCLAMATION #define IDI_ERROR IDI_HAND #define IDI_INFORMATION IDI_ASTERISK #endif /* WINVER >= 0x0400 */
#endif /* !NOICONS */ |
uko - Di 05.12.06 15:52
Hmm, nö, ich hab das gleiche SDK. Nur wo hat sich dann was geändert (angesehen von der neuen Definition IDI_SHIELD)? Wenn ich in der Windows.pas nachschau seh ich
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| { Standard Icon IDs } {$EXTERNALSYM IDI_APPLICATION} IDI_APPLICATION = MakeIntResource(32512); {$EXTERNALSYM IDI_HAND} IDI_HAND = MakeIntResource(32513); {$EXTERNALSYM IDI_QUESTION} IDI_QUESTION = MakeIntResource(32514); {$EXTERNALSYM IDI_EXCLAMATION} IDI_EXCLAMATION = MakeIntResource(32515); {$EXTERNALSYM IDI_ASTERISK} IDI_ASTERISK = MakeIntResource(32516); {$EXTERNALSYM IDI_WINLOGO} IDI_WINLOGO = MakeIntResource(32517); {$EXTERNALSYM IDI_WARNING} IDI_WARNING = IDI_EXCLAMATION; {$EXTERNALSYM IDI_ERROR} IDI_ERROR = IDI_HAND; {$EXTERNALSYM IDI_INFORMATION} IDI_INFORMATION = IDI_ASTERISK; |
Mach ich da irgendeinen Denkfehler?
grüsse,
Ulrich
Delete - Di 05.12.06 15:58
Mathias hat die IDI_xx neu definiert (CommCtrl_Fragment), da musst du es ändern.
Delete - Di 05.12.06 16:49
jupp, das meine ich und du musst die Werte der TD_Icon_xx auf die neuen Werte ändern, dann geht es. Hmmm, mich da ein wenig vertan :oops: Dann klappt es aber (zumind. bei mir). kA wie Simmanze auf die Werte kommt.
uko - Di 05.12.06 17:24
Hi,
Danke, damit funktioniert es nun. Die Konstanten (in CommCtl_fragment)
Quelltext
1: 2: 3: 4: 5: 6: 7:
| 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; |
müssen auf
Quelltext
1: 2: 3: 4: 5: 6: 7:
| TD_ICON_BLANK = 32512; TD_ICON_WARNING = 32515; TD_ICON_QUESTION = 32514; TD_ICON_ERROR = 32513; TD_ICON_INFORMATION = 32516; TD_ICON_BLANK_AGAIN = 32517; TD_ICON_SHIELD = 32518; |
abgeändert werden.
Und nun vielen Dank an alle, die geholfen haben!
grüsse,
Ulrich
Delete - Di 05.12.06 18:53
ok, viel Spaß mit Vista ;)
Delete - Do 01.03.07 15:46
Es ist Monate her, aber die Antwort kriegst du trotzdem:
MagicAndre1981 hat folgendes geschrieben: |
kA wie Simmanze auf die Werte kommt. |
Die habe ich im Internet bzw. im Vista Bridge-Sample gefunden (ich weiß es nicht mehr), und bis zur RC1 ging das damit ja auch wunderbar. Ich habe kürzlich wieder meine CSharp-Demo in der Hand gehabt, weil ich mit den lokalisierten Ordnernamen experimentiert habe, und habe mich auch gewundert, warum die Symbole so komisch aussehen. Die neuen Konstanten habe ich bei mir natürlich jetzt auch ergänzt
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public enum TaskDialogIcon { None = 0, Blank = 32512, Error, Question, Warning, Information, Shield = 32518 } |
Okay, man müsste mal die Demo aktualisieren ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!