Hint setzt modeless Form in den Hintergrund
-
Kennt jemand vielleicht das folgende Problem, und weiß vielleicht den Grund (oder gar eine Lösung):
In unserer Anwendung gibt es einige nicht-modale Masken, die in den Hintergrund wandern, wenn man zufälligerweise mit der Maus über einer anderen Maske ist, und dort ein Hint eingeblendet wird.
Uns war leider noch nicht möglich herauszufinden was für dieses Phänomen verantwortlich ist.
-
Ich nehme an, durch das Hint in einem fremden Fenster bekommt dieses den Cursor und das andere Fenster wandert in den Hintergrund. Nicht-modale Fenster sind eben parallel und nur eines hat den Cursor. Das Hint wird aber irgendwo explizit im Sourcecode ausgelöst. Dort muss evtl. eine Nachricht wie WM_NCHITTEST an DefWindowProc geschickt werden?
-
berniebutt schrieb:
Ich nehme an, durch das Hint in einem fremden Fenster bekommt dieses den Cursor und das andere Fenster wandert in den Hintergrund. Nicht-modale Fenster sind eben parallel und nur eines hat den Cursor.
Ich bekomme das verhalten ausschließlich in einem komplexen Projekt, und bin auf der Suche nach der Ursache. Ich habe dies noch in keinem überschaubaren Testprojekt nachstellen können.
berniebutt schrieb:
Das Hint wird aber irgendwo explizit im Sourcecode ausgelöst. Dort muss evtl. eine Nachricht wie WM_NCHITTEST an DefWindowProc geschickt werden?
Der Hint ist beim VCL-Control hinterlegt (ShowHint=true, Hint="<...>"), und wird nicht explizit im Code behandelt (halt nur indirekt über die VCL).
-
Wenn das Problem nicht normal einzugrenzen ist, würde ich die WndProc des Formulares überschreiben.
Ab dem Zeitpunkt:
asc schrieb:
.. wenn man zufälligerweise mit der Maus über einer anderen Maske ist, und dort ein Hint eingeblendet wird
alle Messages abfangen und auswerten. Denke mal, dass berniebutt auch in diese Richtung denkt.
-
kpeter schrieb:
... Denke mal, dass berniebutt auch in diese Richtung denkt.
Genauso denke ich. Die gesamte Ablaufsteuerung von Windows-Programmen wird über Nachrichten gesteuert. Wer rein mit WinApi (angeblich Ochsentour) programmiert, hat das im Griff. Wer mit aufgesattelten Dingen wie hier VCL arbeitet bekommt da an manchen Stellen schon mal Probleme, weil nicht alles abgedeckt ist.
Die Frage ist jetzt: Wie kriege ich mit VCL die mir unbekannten Nachrichten zu sehen und kann dort gezielt eingreifen wie ich es haben will?
Es handelt sich hier wohl um ein allgemeines Problem für nicht nur ein Projekt. Die Suche nach dem Problem und die Lösung könnte mich interessieren. Aber - wie gesagt - ich kenne mich mit dem Einsatz von VCL nicht aus, nur mit WinApi.
Zitat Petzold für MFC (ungefähr): Macht beim Programmieren nahezu alles leichter und schneller. Nur bei den wenigen nicht berücksichtigten Features sucht man dann eben lange in den Dokus.
-
Hallo
berniebutt schrieb:
Die Frage ist jetzt: Wie kriege ich mit VCL die mir unbekannten Nachrichten zu sehen und kann dort gezielt eingreifen wie ich es haben will?
Auch die VCL verarbeitet Windows-Messages. Hier im Builder-Tutorial des Forums steht wie du manuell Windows-Messages in VCL-Forms abfängst und verarbeitest.
bis bald
akari
-
@akari: Dann sollte doch alles klar sein, oder doch nicht?
Mir scheint das eine Standardaufgabe zu sein, die man einmal löst und dann in allen weiteren Projekten einfach so verwendet.