Ich weiß, das hilft Ihnen nicht wirklich, aber sehen Sie sich bitte diesen Beitrag von Raymond Chen: Wie erstelle ich ein oberstes Fenster? das wird nie von anderen obersten Fenstern abgedeckt?
Ich versuche, eine Anwendung zu erstellen, die ein Fadenkreuz in der Mitte des Bildschirms anzeigt und über allem anderen bleibt. Ziel ist es, in einigen FPS-Spielen ein Fadenkreuz zu haben, das keins bietet. Ich habe mein Fenster erfolgreich für alles außer den Spielen gemacht: /
Hier ist mein Code: (alles ist in der Hauptsache, da ich nur die Kernfunktionen meiner App teste, ich habe es ausgiebig kommentiert, um mein Problem leichter zugänglich zu machen)
%Vor%Ich schätze, dass Anwendungen wie Spiele eine direktere Kontrolle über das Anzeigegerät haben. Ich suche nach einer Lösung für dieses Problem (nicht notwendigerweise eines transparenten obersten Fensters). Auch auf einer Nebenbemerkung, wenn mir jemand erklären könnte, wie man GetLastError () effektiv einsetzt, und auch, warum sich Spiel anders verhält als ein gewöhnliches Fenster.
Vielen Dank im Voraus.
Ich fand, dass die c ++ Bibliothek DirectDrawOverlayLib in der Lage sein sollte, dies zu tun. Um die Webseite zu zitieren:
Eine nicht verwaltete C ++ - Bibliothek zum Erstellen, Verwalten und Zeichnen von DirectDraw-Overlays. EIN C ++ / CLI-Wrapper für .NET-Clients ist enthalten.
DirectDraw-Overlays sind spezielle DirectDraw-Oberflächen, die angezeigt werden über alles andere, einschließlich Vollbild-Spiele und Anwendungen. Sie können verwendet werden, um Programme wie XFire zu implementieren, die Informationen während des Spielbetriebs im Vollbild anzeigen.
Von der SetWindowPos () Dokumentation:
Ein Fenster kann zu einem obersten Fenster gemacht werden, indem Sie entweder die hWndInsertAfter Parameter zu HWND_TOPMOST und sicherstellen, dass die SWP_NOZORDER-Flag ist nicht festgelegt oder durch Festlegen der Position eines Fensters in der Z-Reihenfolge, so dass es über allen vorhandenen obersten Fenstern liegt. Wenn ein das nicht oberste Fenster wird zuoberst gemacht, seine eigenen Fenster werden ebenfalls gemacht oberste. Seine Besitzer werden jedoch nicht geändert.
Auch von derselben Seite:
Um SetWindowPos zu verwenden, um ein Fenster an die Spitze zu bringen, der Prozess, der Besitzt das Fenster muss SetForegroundWindow-Berechtigung haben.
Allerdings denke ich, dass der Link für Windows Vista und höher ist.
Ich versuche, eine Anwendung zu erstellen, die ein Fadenkreuz in der Mitte des Bildschirms anzeigt und über allem anderen bleibt. Ziel ist es, in einigen FPS-Spielen ein Fadenkreuz zu haben, das keins bietet. Ich habe mein Fenster erfolgreich für alles außer den Spielen gemacht: /
Hier ist mein Code: (alles ist in der Hauptsache, da ich nur die Kernfunktionen meiner App teste, ich habe es ausgiebig kommentiert, um mein Problem leichter zugänglich zu machen)
%Vor%Ich schätze, dass Anwendungen wie Spiele eine direktere Kontrolle über das Anzeigegerät haben. Ich suche nach einer Lösung für dieses Problem (nicht notwendigerweise eines transparenten obersten Fensters). Auch auf einer Nebenbemerkung, wenn mir jemand erklären könnte, wie man GetLastError () effektiv einsetzt, und auch, warum sich Spiel anders verhält als ein gewöhnliches Fenster.
Vielen Dank im Voraus.
Ich weiß, das hilft Ihnen nicht wirklich, aber sehen Sie sich bitte diesen Beitrag von Raymond Chen: Wie erstelle ich ein oberstes Fenster? das wird nie von anderen obersten Fenstern abgedeckt?
Von der SetWindowPos () Dokumentation:
Ein Fenster kann zu einem obersten Fenster gemacht werden, indem Sie entweder die hWndInsertAfter Parameter zu HWND_TOPMOST und sicherstellen, dass die SWP_NOZORDER-Flag ist nicht festgelegt oder durch Festlegen der Position eines Fensters in der Z-Reihenfolge, so dass es über allen vorhandenen obersten Fenstern liegt. Wenn ein das nicht oberste Fenster wird zuoberst gemacht, seine eigenen Fenster werden ebenfalls gemacht oberste. Seine Besitzer werden jedoch nicht geändert.
Auch von derselben Seite:
Um SetWindowPos zu verwenden, um ein Fenster an die Spitze zu bringen, der Prozess, der Besitzt das Fenster muss SetForegroundWindow-Berechtigung haben.
Allerdings denke ich, dass der Link für Windows Vista und höher ist.
Ich fand, dass die c ++ Bibliothek DirectDrawOverlayLib in der Lage sein sollte, dies zu tun. Um die Webseite zu zitieren:
Eine nicht verwaltete C ++ - Bibliothek zum Erstellen, Verwalten und Zeichnen von DirectDraw-Overlays. EIN C ++ / CLI-Wrapper für .NET-Clients ist enthalten.
DirectDraw-Overlays sind spezielle DirectDraw-Oberflächen, die angezeigt werden über alles andere, einschließlich Vollbild-Spiele und Anwendungen. Sie können verwendet werden, um Programme wie XFire zu implementieren, die Informationen während des Spielbetriebs im Vollbild anzeigen.