Einzelnen Beitrag anzeigen

Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#10

Re: Eigenes Systemicon in der Titel-Leite

  Alt 2. Dez 2004, 11:30
Nun sei mal nicht so negativ Luckie.

Also möglich sollte es sein, du musst denke ich fast alle NC_ Nachrichten abfangen. Die WM_NCPaint alleine reicht imho nicht aus, da bei der NCActive z.B. die NCPaint nicht noch einmal explizit aufgerufen wird. Du lässt dann Windows die Caption zeichnen und danach zeichnest du deinen Button darüber. Wenn die Cursor-Pos in der WM_NCLBUTTONDOWN passt führst du aus, was auch immer du ausführen willst.

Evtl. reicht es schon eine DLL zu erstellen und mit setWindowsHookEx einen WH_CALLWNDPROCRET-Hook zu initialisieren. Dieser wird jeweils NACHDEM eine Windows-Nachricht verarbeitet wurde aufgerufen. Somit hättest du dann schon deine Windows-gemalte Caption und kannst deinen Button dann in aller Ruhe darüber zeichnen.

Nun musst du entweder noch a) alle Fenster Hooken und dann in der Paint/Click-Prozedur prüfen, ob es sich dabei um ein Hauptfenster handelt, oder b) Herausfinden wann ein Fenster erstellt wurde und dann für die einzelnen Fenster einen WH_CALLWNDPROCRET Hook erzeugen. Dies kannst du erreichen indem du a) einen CBT_Hook erzeugst (SAUBER) oder b) einen Funktionshook für createWindow(Ex) (UNSAUBER!) setzt.

Ich bin mir allerdings nicht ganz sicher ob der WH_CALLWNDPROCRET - Hook auch alle Nachrichten zurückliefert. Daher könntest du auch den alternativen Weg gehen und die Fensterprozedur für die entsprechenden Windows auf deine eigene umbiegen. Dann hast du viel komfortablere Möglichkeiten mit den Messages herumzuhantieren. Ein Beispiel wie das ganze funktioniert kann ich dir auch liefern http://www.aqua-soft.org/board/showthread.php?t=17001 .

Achja XPDesign an/aus musste dann ja auch beachten .

Viel Spass.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat