WinApi, ausblenden cursor im Fenster client-Bereich
Möchte ich ausblenden cursor im Fenster client-Bereich ohne Ränder und Titelleiste (es ist eine einfache opengl-Anwendung). So, Funktion
ShowCursor(FALSE);
nicht geeignet ist. Nach einigem suchen winapi finde ich diese Lösung:
//when create window class for application window
WNDCLASSEX WndClass;
//...
BYTE CursorMaskAND[] = { 0xFF };
BYTE CursorMaskXOR[] = { 0x00 };
WndClass.hCursor = CreateCursor(NULL, 0,0,1,1, CursorMaskAND, CursorMaskXOR);
Ist dies ein guter Weg, um dieses Problem zu lösen typische Aufgabe? Welche Weg ist der beste?
Du musst angemeldet sein, um einen Kommentar abzugeben.
MSDN sagt, dass Sie können die WNDCLASSEX hCursor-Feld auf NULL, in dem Fall müssen Sie explizit setzen Sie den cursor in die Fenster-Prozedur (was bedeutet, dass die Handhabung der WM_SETCURSOR-Nachricht). Zum Beispiel:
Prüfung für HTCLIENT sorgt dafür, dass der cursor ist nur versteckt in den client-Bereich, und der Rahmen und die Beschriftung den richtigen Cursor.
Die SetCursor () - Aufruf verwendest du nicht eine BOOL - es dauert eine HCURSOR. Du bist also der Aufruf SetCursor( NULL ), was bedeutet "verbergen, dass cursor". Was ich gefunden habe in den alten Tagen an Windows ist, dass dies ist video-Treiber abhängig und viele Treiber, die nicht respektieren Sie. Der konsequenteste Weg, dies zu behandeln ist es, einen transparenten cursor-Ressource in der app ein, und ein handle zurück, um das cursor in die WM_SETCURSOR-Nachricht aus dem Hauptfenster.