Entwickler-Ecke

Windows API - eigener Taskleisteneintrag für Unterformulare


recall - Mo 01.09.03 20:49
Titel: eigener Taskleisteneintrag für Unterformulare
Hallo,

Also "eigener Taskleisteneintrag für Unterformulare" (wie z.B. Internet-Explorer !): Also ich will, dass wenn ich z.B. Form2 öffne, dass dann diese in der Taskleiste sichtbar wird (wie bestimme ich dann den Namen des neuen Taskleisteneintrages ?).

Ich weiss, das hatten wir im Forum schonmal, ich finds nur nicht mehr :(
Wie kriege ich das hin ??? Es muss auf allen Windows-Plattformen funktionieren !

Viele Grüsse.


UGrohne - Mo 01.09.03 20:52

Willst Du in der Taskleiste einen neuen Eintrag oder willst Du in einer MDI-App eine Art Taskleiste integrieren? Für letzteres gabs mal glaub von motzi ne Unit, müsst ich kurz nachschauen, dann kann ich Dir das mal zeigen, kannst ihn dann fragen :wink:


mb - Mo 01.09.03 21:33

Hallo!

Also, bei einer normalen Delphi-Anwendung hat normalerweise keine Form (Fenster) einen Taskbar-Eintrag, nicht einmal das Hauptfenster, sondern lediglich die Anwendung selbst. Im Grunde gehört der Taskbar-Eintrag zu einem unsichtbaren Fenster, das für jede Delphi-Anwendung erzeugt wird. Du bekommst es, wenn Du "visuell" programmierst nur nicht mit, kannst aber über das Application-Objekt drauf zugreifen... ("Application" also dieses Fenster)

Aber zu Deinem Problem...

Mit folgendem Sourcecode (in der Form, die in der Taskbar angezeigt werden soll), müsste es gehen:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TMyForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;


Es geht auch komplizierter und "manuell", so sollte es aber auch auf einfache Art und Weise funktionieren.


recall - Di 02.09.03 01:13

danke erstmal...

@UGrohne: nen neuen Taskleisteneintrag !

@mb: kannst du mir den Code erklären ?

Viele Grüsse.


Motzi - Di 02.09.03 07:49

@mb: du hast vergessen zu erwähnen, dass er die Methode CreateParams erst überschreiben muss..! Alternativ gäbe es die Möglichkeit das ganze über GetWindoLong/SetWindowLong zu machen und komplizierter ist das auch nicht wirklich...


recall - Di 02.09.03 10:03

@motzi: das mit dem überschreiben war mir schon klar (was sonst)
nur der Inhalt :roll:

Viele Grüsse...

Kann mir den vielleicht einer erklären :?: :!:


Motzi - Di 02.09.03 10:19

recall hat folgendes geschrieben:
@motzi: das mit dem überschreiben war mir schon klar (was sonst)

Na wenns dir klar is ist es ja gut.. ;) Geht aber nicht allen so... :roll:
Zitat:
nur der Inhalt :roll:

CreateParams wird aufgerufen bevor das Fenster erzeugt wird um die WndClass-Struktur mit den Werten zu füllen die benötigt werden um das Fenster zu erzeugen. Es gibt da jetzt 2 Felder - Style und ExStyle
Diese Felder enthalten Flags die bestimmen wie dieses Fenster dann "aussehen" soll. zB kann man hier bestimmen ob das Fenster eine Titelleiste hat, ob es einen Rahmen hat, welche Buttons in der Tittelleiste auftauchen sollen, ob es in der Größe veränderbar sein soll, ob es Scrollbars enthalten soll etc - und eben auch ob es einen Eintrag in der Taskleiste haben soll.

Nähere Infos findest du im PSDK oder online unter http://www.msdn.microsoft.com


mb - Di 02.09.03 10:36

Sorry, da war Motzi wohl schneller... Jetzt ist auch alles wichtige gesagt. Es gibt irgendwo ... ich müsse mal nach dem Link schauen ... ein ganz schönes Tutorial im Netz, wie man in Delphi auch ganz ohne VCL programmieren kann.

(Ist schon lange her, dass ich das gesehen habe)

Das macht auf Dauer nicht unbedingt Spaß, aber man lernt dabei, was eigentlich passiert und welche Arbeit Delphi einem abnimmt.

Im übrigen kannst Du - wenn Du auf die Delphi-Form-Geschichte verzichtetst und alle Fenster manuell über die WinAPI erzeugst - wirklich schlanke Anwendungen (im einstelligen kB-Bereich) erzeugen.


Motzi - Di 02.09.03 10:50

Ich denke du meinst die Tutorials von Luckie - http://www.luckie-online.de


mb - Di 02.09.03 14:45

Stimmt genau!

In diesem Fall ist es ja peinlich, dass ich es nicht mehr genau wußte. Wenigstens habe ich sie (die Tutorials) gelobt... :D


recall - Di 02.09.03 17:37

Danke an alle, ihr habt mir echt weitergeholfen,
werde das alles mal ausprobieren ... :D *freu*

Viele Grüsse.