OnCaptureChanged
-
Hallo,
habe das problem, dass ich in OnCaptureChanged bei einem normalen window dragging über HTCAPTION immer NULL als window handle erhalte.
Sollte es nicht das Fenster sein, welches den Capture erhält?
-
Da sist vollkommen normal und eher die Ausnahme, dass dort ein Handle übergeben wird.
Es muss kein Fenster ein Capture haben...
Das ist der Normalfall. Capture ist was anderes als Focus. Im Normalfall bekommt eben nicht ein Fenster "alle" Mausnachrichten.
-
????
MSDN: "The WM_CAPTURECHANGED message is sent to the window that is losing the mouse capture."
Wenigstens beim ReleaseCapture sollte man doch in OnCpatureChanged das eigene window handle erhalten, oder verstehe ich da etwas nicht?
Bei einem normalen window dragging erhält man 2 x OnCpatureChanged mit jeweils NULL als Handle ... woher weiss man dann, ohne sich den Zustand zu merken, wann ein drag start und ein drag end Ereignis aufgetreten ist?
-
Du hast was nicht verstanden: Beim ReleaseCapture bekommt eben "NIEMAND" den Capture. Also bekommt, dass Fenster, das den Capture hatteund der lParam Wert ist NULL!
Was soll daran falsch sein? Es ist der Normalfall.
-
erstmal Danke für die Info!
Ich hänge dann etwas in der Luft und weis nicht weiter.
Folgendes:
Ich will auf das Ereignis "window dragging über HTCAPTION" beim Start und Ende zusätzliche Arbeiten durchführen.
So weit so gut, aber wie unterscheide ich dann, wann ein gültiges Drag-Ende und wann ein Drag-Cancel (ESC) aufgetreten ist, ohne mir irgendwelche Zustände zu merken?
-
Und warum bitte machst Du das selber? Warum wllst Du Windows "nachprogrammieren"?
Das macht Windows doch perfekt. Gib bei WM_NCHITTEST HTCAPTION zurück und das dragging eines Fensters geht von selbst
Ansonsten lies mal etwas weiter die Widows Doku.
Es gibt WM_MOVING und WM_MOVE!
-
hääää ... Ich will ja gerade nicht windows "nachprogrammieren", sondern nur zusätzliche Arbeiten durchführen, das Dragging an sich, soll von Windows durchgeführt werden.
Vielleicht habe ich mich hierzu nicht klar ausgedrückt.> Es gibt WM_MOVING und WM_MOVE!
Dann kannst Du mir sicher auch meinen Post OnWindowPosChanging beantworten.
-
Leider beantwortet dies noch nicht meine Frage.
Folgender Sachverhalt:
Von windows selbst soll das window-dragging über alle Möglichkeiten (Maus oder Tastatur) durchgeführt werden.
Ich will nur bei den Ereignissen Start/End/Cancel zusätzliche arbeit verrichten.
Wo hänge ich mich für diese drei Fälle ein, um darauf korrekt zu reagieren?Hoffentlich habe ich mich jetzt etwas deutlicher ausgedrückt.
-
Wie wäre es wenn Du einfach mal den entsprechenden Abschnitt der Windows Nachrichten ergooglest.
Wenn Du schon in solche tiefen absteigst wäre das doch naheliegend. Es steht alles in der MSDN:WM_ENTERSIZEMOVE
WM_MOVING
WM_MOVE
WM_SIZING
WM_SIZE
WM_EXITSIZEMOVE
-
Ja das habe ich alles schon gelesen. Aber wie Du sicher weist, gibt es Fälle, in denen eine WM_EXITSIZEMOVE-Nachricht nicht gesendet wird.
Egal, trotzdem Dank für die Info.
-
wAcKeLkOpF schrieb:
Ja das habe ich alles schon gelesen. Aber wie Du sicher weist, gibt es Fälle, in denen eine WM_EXITSIZEMOVE-Nachricht nicht gesendet wird.
Egal, trotzdem Dank für die Info.
Nein. Weiß ich nicht. Wann wird es nicht gesendet?
-
wenn Du das System-Menu eines Fensters aufrufst,
dann auf Größe ändern klickst, <--- WM_ENTERSIZEMOVE
jetzt lediglich wieder auf das Fenster im Client-Bereich klicken, <---keine WM_EXITSIZEMOVE
und "Größe ändern" ist abgeschlossen.