Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Customized About MessageBox (https://www.delphipraxis.net/82794-customized-about-messagebox.html)

Luckie 19. Dez 2006 12:46


Customized About MessageBox
 
Liste der Anhänge anzeigen (Anzahl: 2)
Man kennt das ja vielleicht. Man hat ein kleines Tool geschrieben und jetzt will man noch einen About-Dialog anzeigen. Um das Programm nicht noch mit einem zusätzlichen Formular aufzublähen oder um nicht noch einen zusätzlichen Dialog in einer WinAPI-Anwendung erstellen zu müssen, benutzt man eine einfache MessageBox. Jetzt hätte man es aber gerne, dass der Benutzer doch irgendwie die Möglichkeit hat, die Homepage zu besuchen. Entweder man macht nun doch einen zusätzlichen Dialog / Form oder man bohrt die MessageBox etwas auf. Und genau das habe ich gemacht. Rausgekommen ist dabei eine einfach anzuwendende Klasse, um eine Aboutbox anzuzeigen, die eine zusätzliche Schaltfläche enthält, um eine Webseite im standard Browser aufzurufen. Wie das ganze dann aussieht, kann man sich im angehängten Screenshot angucken.
Zusätzlich wird auch noch die Beschreibung der Exe und deren Versionsnummer automatisch aus der Ressource ausgelesen. Man muss sich also nicht mehr um viel selber kümmern.

Im Anhang die Unit MpuAboutMsgBox.pas mit der About-Dialog MessageBox und ausserdem eine Demo-Anwendung.

Ein paar Worte, wie das ganze Funktioniert:
Es wird ein lokaler Hook installiert, wenn die MessageBox aufgerufen und wieder deinstalliert, wenn die MessageBox geschlossen wird. In der Hook-Prozedur werden die beiden Schaltflächen "OK" und "Cancel" einfach nur neu beschriftet und das war es auch schon.
Zu Konflikten mit anderen Messageboxen kann es dabei nicht kommen, da der Hook lokal ist, sich also nicht auf andere Prozesse auswirkt und andere MessageBox, im gleichen Prozess, können auch nicht beeinflusst werden, da der Hook erst installiert wird, wenn die MessageBox angezeigt und wieder deinstalliert wird, wenn die MessageBox geschlossen wird. Eine andere MessageBox kann nicht angezeigt werden, da die AboutMsgBox modal angezeigt wird.

Auf vielfachen Wunsch habe ich die Klasse noch etwas aufgebohrt. man kann jetzt auch ein eigenes Icon anzeigen lassen. Dies muss in der Ressource vorliegen und wird über die ID ausgewählt.

Im Screenshot noch mal alle vier Möglichkeiten die About-Messagebox anzeigen zu lassen.

Flips 20. Dez 2006 13:54

Re: Customized About MessageBox
 
Hi.

Nette Klasse, der einfache Aufruf gefällt mir wirklich gut :-D
Wie siehts denn mit einem eigenen Icon aus?
Und eigenen Buttontexten? :-)
(Will die Klasse damit nicht kritisieren :-) )

Aber das mit dem zusätzlichen, unnötigen Formular hast du gut erkannt :mrgreen:

TheAn00bis 20. Dez 2006 14:06

Re: Customized About MessageBox
 
Tolle Sache, wirklich nützlich!

Danke.

Luckie 20. Dez 2006 14:08

Re: Customized About MessageBox
 
Du kannst die Klasse ja nach belieben erweitern, die Sourcen sind deshalb ja dabei. Das Prinzip sollte aus dem Sourcecode hervorgehen, wo du was anpassen musst. Mir reicht die Klasse so, wie sie ist.

himitsu 20. Dez 2006 14:17

Re: Customized About MessageBox
 
Ein Icon ... wo?
in der Titelleiste?

Na ja, aufgrunde des Fenstertyps ist dort eh Keines,


also könnte man höchstens noch das "InfoBild" ... dieses (i) im ScreenShot ersetzen,

oder ein eigenes Objekt in das Fenster einbauen (wobei man hier wohl auch gleich eine eigene Form erstellen sollte).


Ich denk daher och mal, das es für die Allgemeinheit total ausreicht, so wie es ist. :angel:

Luckie 20. Dez 2006 14:51

Re: Customized About MessageBox
 
Mit der API-Funktion MessageBoxIndirect kann man auch das Icon anpassen.

Flips 20. Dez 2006 14:54

Re: Customized About MessageBox
 
Jap, ich meinte auch das (i). :-)

Luckie 21. Dez 2006 10:03

Re: Customized About MessageBox
 
Neue, erweiterte Version:
Zitat:

Auf vielfachen Wunsch habe ich die Klasse noch etwas aufgebohrt. man kann jetzt auch ein eigenes Icon anzeigen lassen. Dies muss in der Ressource vorliegen und wird über die ID ausgewählt.

Im Screenshot noch mal alle vier Möglichkeiten die About-Messagebox anzeigen zu lassen.

Flips 21. Dez 2006 12:46

Re: Customized About MessageBox
 
Top :thumb:

*KomponenteInDenKreisDerOftGenutztenAufnehm* :mrgreen:

StefanG 1. Feb 2007 13:21

Re: Customized About MessageBox
 
kurze Frage zu dem Icon,
wie kann man das Icon Global bei jedem Aufruf von messageBox ändern?

Du holst es ja jetzt aus der Resource heraus.....wenn man den hook Global macht, dann ist die DLL ja in jedem einzelnen Process geladen und greift somit nicht auf DEINE Resource zu, wo das icon drin ist oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 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