Unsichtbaren Mauszeiger nur in Client Area
-
Wie stelle ich es an, dass der Mauszeiger nur in der Client Area meines Fensters unsichtbar ist (aber nicht wenn er sich gerade über z.B. der Title Bar befindet!).
Habe in meiner Fenster-Prozedur folgendes versucht:case WM_ACTIVATE: ShowCursor(LOWORD(wParam) ? FALSE : TRUE); return DefWindowProc(hwnd, msg, wParam, lParam);Weil wenn der User ein anderes Fenster anklickt, soll natürlich der Maus-Cursor wieder sichtbar sein (auch über meinem Anwendungs-Fenster). Und erst wenn er mein Anwendungsfenster wieder anklickt, soll der Maus-Cursor wieder unsichtbar sein (natürlich nur innerhalb meines Anwendungs-Fensters -> Klappt auch recht gut mit dem Konstrukt oben, weil Windows 'schlau genug ist', den Maus-Cursor wieder sichtbar zu machen, wenn er den Bereich meines Anwendungsfensters verlässt.)
Leider ist bei der Vorgangsweise der Mauszeiger auch dann unsichtbar, wenn er sich zwar 'über meinem Fenster' befindet, aber 'außerhalb' der Client Area (also z.B. über der Titelleiste).
Wie könnte ich es anstellen, dass der Mauszeiger nur über der Client-Area meines Fensters unsichtbar ist? Welche andere Nachricht könnte ich dazu abfangen als WM_ACTIVATE (WM_MOUSEMOVE ist nicht optimal geeignet, weil wenn ich den Cursor dann hundertmal mit ShowCursor(FALSE) unsichtbar mache, kann man ihn mit ShowCursor(TRUE) leider nicht einfach wieder sichtbar machen!)
Thx für Tipps!
-

case WM_SETCURSOR: { if (LOWORD(lParam) == HTCLIENT) { SetCursor(0); return 1; } break; }
-
Thx hat mir sehr weiter geholfen. Echt nicht leicht in der Fülle von WINAPI Messages das zu finden, was man sucht.
mfg