Hauptseite >Tips zu VB5/6 > MessageBox und CommonDialog platzieren view this document in English | |
Die MessageBox wird bekanntlich standardmässig in der Bildschirmmitte angezeigt. Manchmal ist es jedoch
notwendig, sie selbst zu platzieren. Nur: Wie?
Ein Hook hilft hier weiter. Zur Erklärung: einen Hook setzten bedeutet, dem Betriebssystem mitzuteilen: "Ruf doch bis auf weiteres bei jeder Windows-Nachricht, die meinen Thread betrifft, folgende Routine von mir auf: ..." und in dieser Routine dann zu reagieren, wenn das Erzeugen des MsgBox-Fensters bekanntgegeben wird. Da mit dieser Nachricht auch das Fensterhandle der MsgBox mitgegeben wird, kann man nun diesem Fenster eine Nachricht schicken, es möge sich bitte an den Koordinaten x und y platzieren. Danach sollte der Hook sofort aufgehoben werden. Das Erzeugen eines Fensters (nebenbei: auch Buttons usw. sind Fenster!) wird mit der Nachricht WM_CREATE bekanntgegeben. Nun muss herausgefunden werden, ob es das gewünschte Fenster ist; mit GetClassName kriegt man den Klassennamen heraus, und wenn das Fenster der Klasse #32770 (das ist das Dialogfenster!) angehört, greifen wir ein. In ein Standard-Modul muss Folgendes:
Der Aufruf erfolgt jetzt ganz einfach:
Übrigens: Da das CommonDialog-Fenster ebenfalls der Fensterklasse #32770 angehört, kann es mit dem
vorherigen Aufruf von Position32770 ebenso platziert werden.
|
|
Hauptseite > Tips zu VB5/6 > diese Seite | |
© 2001-2021 Wolfgang Enzinger |