AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Entwicklung für Vista und XP

Ein Thema von choose · begonnen am 21. Jul 2006 · letzter Beitrag vom 3. Apr 2007
Antwort Antwort
Seite 3 von 10     123 45     Letzte » 
MathiasSimmack
(Gast)

n/a Beiträge
 
#21

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 13:37
Zitat von NicoDE:
Zitat von MathiasSimmack:
Was denkst du, wer einfach die ganzen Windows XP-Themen in die Tutorials geschrieben hat?
Nunja, bisher haben alle die Manifest-Datei als Resource einkompiliert. Das dumme daran ist nur, dass man sie deshalb nicht mehr ändern kann (zum Beispiel um im Manifest einzutragen, dass das Program Admin-Rechte benötigt).
Davon hörte ich zwar schon in Bezug auf Inno Setup und Vista, aber woher hätte ich das damals beim Schreiben wissen sollen, Nico? Bin doch kein Hellseher. Ich wollte damit nur sagen, während Luckie einfach nur Informationen mitteilte (so und so benutzt man dies und das), habe ich noch ein paar Spielereien (= Neuigkeiten von XP) ergänzt, weil ich XP hatte, Luckie aber nicht.


PS: Den Glas-Effekt im Clientbereich kannst du vergessen. Wer so was macht, der muss besch**** sein. 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.ä.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#22

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 13:48
Noch ein PS:

Zitat von choose:
Was aber passiert aber mit den "Task Dialogs", die nun die einfachen Meldungsboxen ablösen? Muss ich das abermals über eine eigene Komponente abdecken, damit ich die Phrasen in den Meldungen nicht zweimal entwerfen muss?
Musst du nicht. Auch hier dürfte eine Versionsprüfung reichen. Wenn du ins Windows SDK schaust, dann such mal im Index nach "Task Dialog" bzw. "TaskDialogIndirect". Ich bin per Google gerade darüber gestolpert. Aber glücklicherweise wird das Thema auch im SDK abgehandelt. Es läuft also darauf hinaus, dass du dir einen Wrapper schreiben musst, der unter XP die typische Messagebox anzeigt und unter Vista dann eben den neuen Dialog.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#23

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 13:53
Zitat von MathiasSimmack:
Den Glas-Effekt im Clientbereich kannst du vergessen. Wer so was macht, der muss besch**** sein.
In Fällen, in denen der Rand (wie hier zu sehen) etwas erweitert werden soll, kann ich mir das sehr gut vorstellen...
gruß, choose
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#24

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 13:57
Hallo Mathias,

Zitat von MathiasSimmack:
Es läuft also darauf hinaus, dass du dir einen Wrapper [für Task Dialog] schreiben musst, der unter XP die typische Messagebox anzeigt und unter Vista dann eben den neuen Dialog.
Wenn man sich auf den kleinsten Nenner einigt, klar. Dann schreibe ich Dialoge, die einfach nur "Ja" und "Nein" erwarten. Wenn meine Benutzerführung allerdings die Möglichkeiten der Task Dialogs ausnutzen möchte (Radiobuttons, Command Links, Detail Knopf, etc.) könnten sie auf herkömmliche Weise nicht gezeigt werden. Das ist wie bei den SysLinks: Drauf verzichten hätte man einfach können, wenn ich unter XP aber solche Links bieten möchte und mein GUI darauf aufbaut, muss eine geeignete Lösung für Win2k her...
gruß, choose
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#25

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 14:37
Zitat von choose:
Wenn meine Benutzerführung allerdings die Möglichkeiten der Task Dialogs ausnutzen möchte (Radiobuttons, Command Links, Detail Knopf, etc.) könnten sie auf herkömmliche Weise nicht gezeigt werden.
Dann geht es jetzt aber um mehr als nur die Pflege einer API-Anwendung. Pflege setzt voraus, dass die Anwendung bereits existiert. Tut sie das, dann dürfte sie bisher auch ganz gut ohne den Vista-Schnickschnack ausgekommen sein. Warum jetzt auf Biegen und Brechen so etwas einbauen und dann Probleme auf den älteren Betriebssystemen riskieren? Das würde ich dann doch wieder mehr in diese Thematik einordnen.
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#26

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 16:35
Zitat von MathiasSimmack:
mir ist bisher in Vista noch kein Assistent oder sonst was begegnet, der ein durchscheinendes Panel besaß, auf dem Buttons sitzen, o.ä.
Doch die Anzeige aller verfügbaren Gagdets für die Sidebar und das sieht soooooo geil aus . Ick will das auch haben
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#27

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 18: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).
Miniaturansicht angehängter Grafiken
taskdialog_178.png  
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#28

Re: Entwicklung für Vista und XP

  Alt 24. Jul 2006, 21:31
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.
Miniaturansicht angehängter Grafiken
taskdialogindirect_175.png  
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#29

Re: Entwicklung für Vista und XP

  Alt 25. Jul 2006, 09:14
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?
gruß, choose
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#30

Re: Entwicklung für Vista und XP

  Alt 25. Jul 2006, 17:46
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 ) 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.


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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz