Zeigerbewegung ermitteln
-
CWnd::OnNcMouseMove <- für nicht Client-Bereich
also am besten ne eigene Methode in deiner Klasse machen(myMouseMoveFunction). Und diese dann jeweils in OnNcMouseMove UND in OnMouseMove aufrufen. Ja nicht den Code 2 mal reinproggen^^
-
Pellaeon schrieb:
CWnd::OnNcMouseMove <- für nicht Client-Bereich
Gut zu wissen das es sowas auch gibt

-
Hört sich alles super an.
Doch leider klappt es nicht.
Wenn ich WM_ONNCMOUSEMOVE abfange und zum Testen eine MessageBox in ihr aufrufe, wird diese MessageBox nur angezeigt, wenn ich mit dem Mauszeiger aus dem Fenster oder von Außen in das Fesnter gehe.
Wenn ich aber meine Maus außerhalb des Fenster bewege, wird die Nachricht nicht ausgelöst.
Es ergibt sich leider noch ein weiteres Problem. Selbst wenn es doch so klappen sollte (weil ich einen Fehler gemacht habe), gibt es keine Nachricht für das Drücken einer Keyboard-Taste außerhalb des Client-Fensters(möchte auch wissen,ob der User eine Keyboard-Taste drückt).
Oder liege ich da falsch.
-
WM_NCMOUSEMOVE löst nur im nicht client bereich deines Windows aus, also im Rahmen oder der Titelleiste. Für das was Du machen willst, solltest Du einen Hook anmelden, oder auf DirectImput verzweigen. Mit DirectImput bekommst Du alle Tasten, auch die Sondertasten der Tastarur.
Gruß
-
Danke CTecS
Du meintest DirectInput nicht Imput oder?
Hast du für DirectInput vielleicht ein Codebeispiel oder so etwas. Habe es noch niemals so gemacht.
Mfg
-
Bin es nochmal
Ich habe eine Frage zu Hook. Dieses wird auch immer in Spy Software benutzt oder? Meine Sorge ist jetzt, dass wenn der User ein Programm gegen Spy-Software hat, dass mein Programm darunter fällt und blockiert oder so etwas wird.
Liege ich da falsch oder nicht?
-
Schau dir mal in der MSDN folgendes an:
CWnd::SetCapture()
und
CWnd::ReleaseCapture()Ich denke das könnte dir helfen.
Grüssli
-
Also
SetCapture habe ich nicht mehr ausprobiert, denn ich habe es schon mit einem Timer und GetCursorPos() erledigt. In dem ich einfach jede Sekunde die alte Position mit der neuen vergleiche.
Doch leider bleibt das Problem mit der Tastatureingabe. Wie kann ich ermitteln ob der User die Tastatur benutzt?
Und zu DirectInput habe ich nicht wirklich etwas gefunden(codebeispiel usw.).
Mfg
-
DirectInput ist von DirectX ... für sowas empfehle ich das ehrlich gesagt gar nicht, ausser du brauchst DirectX eh schon, dann ok, aber glaube nicht, dass du schon DirectX brauchst *g*
Und zur Tasta schau dir mal WM_KEYDOWN und WM_KEYUP an.
Grüssli
-
WM_KEYDOWN, reicht dir das für die Tasta?
Nähere Infos siehe MSDN.zu WM_NCMOUSEMOVE: Die Nachricht kommt natürlich nur, wenn dein Fenster auch den Fokus hat. Wenn dein Fenster nicht de Fokus hat und du dann auch die Nachrichten willst, dann brauchst wirklich einen Hook.
-
Moin
mir ist gerade die Funktion GetAsyncKeyState() aufgefallen.
Weiß einer wie man es hinbekommt, dass sie alle Tasten abfragt?
Mit einer Schleife ist mir klar. Doch wie mach ich das mit der Übergabe der Werte(sie laufen ja leider nicht von 1 bis 80 hoch, sondern enthalten manchmal auch Buchstaben)