![]() |
TrackMouseEvent's rectangle befindet sich wohl auf dem Mond?
Kann das überhaupt sein? Da gibt es als zentralen Gegenstand für diese TrackMouseEvent-Funktion ein Rechteck über dem ich z.B. mit der Maus HOVERn (drüber schweben) bzw. das ich LEAVEn (verlassen) kann, ABER es gibt nirgendwo eine Möglichkeit dieses Rechteck auch an eine bestimmte Stelle zu platzieren. Stattdessen wird immer nur von der Size dieses Rectangles gesprochen, die man mittels SPI_GET/SETMOUSEHOVERWIDTH/HEIGHT und SYSTEMPARAMETERSINFO auslesen bzw. verändern kann. NIRGENDS aber ist eine Top oder Left-Koordinate auch nur erwähnt, mittels derer ich dieses Rectangle dann z.B. auch mal über einer Button positionieren könnte.
Egal mit was ich die Funktion aufrufe, mit TME_HOVER oder mit TME_LEAVE, sie reagiert immer wieder so als wäre das Rechteck nicht auf dem Screen (sondern irgendwo auf dem...). Das heißt also immer bei TME_HOVER: es gibt niemals eine wm_MouseHover-Message bzw. der Eventhandler wird nie angesprungen; und bei TME_LEAVE bedeutet das: es wird immer sofort eine wm_MouseLeave-Message abgeschickt bzw. der Eventhandler entsprechend sofort ausgeführt. Gleichzeitig tut TrackMouseEvent trotzdem aber immer so als sei alles okay und returniert jedesmal mit true bzw. mit >0. Also wie gesagt, irgendwie glaubt die Funktion, mit der Maus immer jenseits dieses besagten Rechteckes zu sein. Wahrscheinlich ist letzteres positionsmäßig von irgendwelchen DWORDs abhängig, die selbst aber irgendwie ausgeschaltet mit 4,3Mrd in irgendeinem 'Kellerwinkel' herumliegen und das Rechteck somit irgendwohin ins All projizieren. Und deswegen also auch nach langer Rede die kurze Frage ans Forum: Hat es hier vielleicht schon mal jemand geschafft, diese TrackMouseEvent-Funktion korrekt in Gang zu bringen, und wenn ja wie? Wie kann man dieses ominöse Rectangle dahinpositionieren wo man es auch haben will? Danke für eure Hilfe, dieses damned :? Rechteck endlich auch mal irgendwie auffindbar zu machen! (PS. Ich möchte nicht wissen, wie ich so ein TrackMouseEvent oder dessen Effekte vielleicht selbst irgendwie herstellen könnte, sondern nur, WIE ich jetzt endlich auch mal an dessen Rechtecksposition herankomme, thx) |
Re: TrackMouseEvent's rectangle befindet sich wohl auf dem M
Irgendwie werde aus deinem Gestammel nicht so recht schlau. Alles was ich verstanden habe ist, dass du irgendwelche Probleme mit TrackMouseEvent hast. Aber so geht es bei mir:
Delphi-Quellcode:
Das ist die überschriebene standard Prozedur eines Buttons, den ich mit einem Hover Effekt versehen habe.
function BtnWndProc(hBtn, uMsg, wParam, lParam: DWORD): DWORD; stdcall;
var tme: TTRACKMOUSEEVENT; TrackMouseEvent_: function(var EventTrack: TTrackMouseEvent): BOOL; stdcall; begin Result := 0; case uMsg of WM_MOUSEHOVER: begin if bHover = TRUE then exit; SetWindowLong(hBtn, GWL_EXSTYLE, GetWindowLong(hBtn, GWL_EXSTYLE) and not WS_EX_CLIENTEDGE); SetWindowPos(hBtn, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_FRAMECHANGED); bHover := TRUE; end; WM_MOUSELEAVE: begin if bHover = FALSE then exit; SetWindowLong(hBtn, GWL_EXSTYLE, GetWindowLong(hBtn, GWL_EXSTYLE) or WS_EX_CLIENTEDGE); SetWindowPos(hBtn, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_FRAMECHANGED); bHover := FALSE; end; WM_MOUSEMOVE: begin tme.cbSize := sizeof(TTRACKMOUSEEVENT); tme.dwFlags := TME_HOVER or TME_LEAVE; tme.dwHoverTime := 10; tme.hwndTrack := hBtn; @TrackMouseEvent_:= @TrackMouseEvent; // nur eine Pointerzuweisung!!! TrackMouseEvent_(tme); end; else Result := CallWindowProc(OldWndProc, hBtn, uMsg, wParam, lParam); end; end; |
Re: TrackMouseEvent's rectangle befindet sich wohl auf dem M
Gestammel ?
Also ich habe dich auch bei deinen sehr sehr sehr vielen Einträgen hier schon schon mit den aller aller lächerlichsten Anfängerfehlern und sooo dämlichen Antworten gesehen, da konnte man wirklich nur noch mehr denken: Mein Gott, wie wirklich extrem peinlich das für den Mann doch sein muss...... Und was überhaupt sollte man dir dann wohl selbst erst in solchen Situationen antworten? Nichts für ungut... |
Re: TrackMouseEvent's rectangle befindet sich wohl auf dem M
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
PS: Soll ich meine Antowrt wieder löschen, da sie eventuell in die Kategorie "dämliche Antworten" fällt? :evil: Um noch mal auf dein Problem zu kommen: TrackMouseEvent ist immer mit einem Fenster verknüpft, wie man an der Struktur sehen kann -> Element hWnd. Mit GetWindowRect kommt man dann an das begrenzende Rechteck dran. |
Re: TrackMouseEvent's rectangle befindet sich wohl auf dem M
..weil du ja Belege wolltest und ich sie dir nicht schuldig bleiben kann, da sonst ich der Täter wäre:
Z.B. ![]() Oder ![]() Übrigens, war das nicht etwas vorschnell, schon 2 Minuten nach Mystics Lösungsvorschlag mit 'Bingo' und 'Das war es.' zu antworten. Denn damit ging es ja auch noch nicht richtig, sondern es wurden nur einmal eine BlockSize geschrieben, aber nicht mehr (ich habe das mal kurz an einem 1.2 Megabyte großen File ausprobiert). Wahrscheinlich hast du dich von den da trotzdem nur übertragenen 64KB bloß kurz bluffen lassen. Nur wenn du es dann auch konsequent auf typisierte Datein vereinfacht hattest, funzte es korrekt. Und ob du das in diesen zwei Minuten mit downloaden + lesen der Anwort und editieren und uploaden deiner eigenen Antwort getan hast, glaube ich nicht. Außerdem hättest du dann bestimmt auch noch was diesbezügliches dazugeschrieben. (Ach ja und wenn du einen halbwegs schnellen Comp hast, dann dauert auch das Extrahieren von einem Megabyte auch mittels typisierter Dateien noch nicht einmal viel mehr als eine Sekunde.) So das reicht auch schon, denn dämlich war das hier über dich zu berichtende (deine zweite Forderung) ja u.a. auch schon genug. Thread-Ende (weil ich auch keine Lust habe, alle deine Antworten diesbezüglich zu untersuchen). |
Re: TrackMouseEvent's rectangle befindet sich wohl auf dem M
Die Änderung war in Sekundenbruchteilen gemacht. Und danach hat es ja funktioniert, wo ist dein Problem? Und der Fehler beim ersten Link, war ein reiner Denkfehler. Aber passiert dir wohl nicht. Gut, solche Programmier Götter soll es auch geben - Glückwunsch, dass du dazu gehörst.
Jetzt musst du mir nur noch erklären, was daran dämlich ist, wenn man etwas nicht weiß bzw. wenn man Fehler macht. Aber bitte per PN, persönliche Dinge gehören hier nicht her. Und geschlossen, da dich eine weiter Lösung des Problemes anscheinend nicht mehr interessiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz