Suchergebnisse
Suchergebnisse 1-20 von insgesamt 60.
Oh nein, ich bin so eine Niete! Ich hatte in meinem Code stehen: CDS_FULLSCREEN = 0x00000001 aber dieser Wert entspricht CDS_UPDATEREGISTRY.. Ich fasse es nicht! Danke fürs Aufmerksam machen!! Jetzt mache ich den Vollbildmodus natürlich mit der Funktion ChangeDisplaySettings!
WTF? Ich glaube ich mache echt was falsch.. Könntest du vl. den Code, mit dem du die Auflösung änderst, posten?
Also ich glaube nicht, dass irgendein Spiel ChangeDisplaySettings verwendet.. Aber probier es selber mal aus: Schiebe Icons auf deinem Desktop ganz nach rechts, ändere die Auflösung auf einen kleineren Wert und wieder zurück: Die Icons sind total verschoben.. Die meisten Spiele benutzen zum Ändern der Auflösung DirectX oder OpenGL vermute ich..
Ich habe es mal ausporbiert: Meine Auflösung ist 1920x1200. In einem C# Programm ändere ich per ChangeDisplaySettings die Auflösung auf 1024x768. Beim Beenden dieses Programmes stelle ich wieder per ChangeDisplaySettings die Auflösung zurück auf 1920x1200. Ergebnis: Alle Icons auf dem Desktop sind verschoben. Ich benutze übrigens Windows 7, aber ich glaube das ist unerheblich.. Und ja, ich habe mit meinem geposteten Code Probleme mit der Interoperabilität.. Weisst du vielleicht eine Lösung?
Das wäre leider ein unglaublicher Aufwand.. Mir würde es besser gefallen, Direct3D für diesen Zweck zu missbrauchen.. Zumal ich DirectX sowieso schon verwende (DirectSound) Meine Umsetzung aus dem 1.Post funktioniert aber nicht. Hat jemand eine Idee woran das liegen könnte?
Aber wenn per DirectX die Auflösung geändert wird, und das Programm abstürzt wird die normale Auflösung wiederhergestellt. Das mit dem Abstürzen ist ja noch abzusichern. Aber wenn man einfach so die Auflösung auf 1024x768 stellt und danach wieder auf einen höheren Wert, sind die Symbole auf dem Desktop völlig anders angeordnet.. Das möchte ich keinem User antun..
Zerhaut es einem nicht den ganzen Desktop (Icons an anderen Positionen etc), wenn man mit ChangeDisplaySettings die Auflösung ändert? Und sie wird nicht automatisch zurückgeändert, wenn das Programm abstürzt oder?
Danke für die Antwort. Das Fenster ist bereits randlos und fix auf die Größe 1024x768 eingestellt. Daher muss man für einen Vollbildmodus auf jeden Fall die Auflösung ändern.. Damit entspricht das wieder dem "gängigen Vorschlag" von dem ich gesprochen habe.. Was gäbe es sonst noch für Möglichkeiten?
Hallo, mein Spiel ist in C# programmiert. Es ist 2D und benutzt zur Grafikausgabe Funktionen aus System.Drawing (GDI+). Wie kann ich am besten einen Vollbildmodus hinbekommen? Der gängige Vorschlag ist: Auflösung ändern, Taskleiste ausblenden, Programm in den Vordergrund Aber das kommt mir nicht ideal vor.. Gibts da andere Möglichkeiten? Ich habe schon probiert ein Direct3D Device zu erstellen, welches nur die Auflösung ändert und somit den Vollbildmodus ermöglicht.. Aber dann werden sachen, die...
Ok, das war mir neu, dass es Lost Device auch im Fenstermodus gibt. So oder so ist das aber nicht die Lösung, denn selbst wenn mein Fenster im Hintergrund ist (z.b. hinter Taskmanager / Word) gibt TestCooperativeLevel D3D_OK zurück. Das ist ja auch gut so, denn es funktioniert ja alles. Ich möchte aber, dass das Spiel pausiert wird, wenn das Fenster nicht im Hintergrund ist. Nur wie ermittle ich am besten, ob mein Fenster das ist, welches vom Benutzer gerade benutzt wird? Mit der WM_ACTIVATE geh...
Nein, denn TestCooperativeLevel() == D3DERR_DEVICELOST kommt nur im Vollbildmodus vor. Im Fenstermodus gibts dat nicht...
Ja, es ist eine. Den Code, den du geposted hast, habe ich bisher auch verwendet. Leider stimmt der Status auf diese Weise manchmal nicht..
Hallo, um zu prüfen, ob mein Spiel (bzw. dessen Fenster) gerade aktiv ist, verwende ich folgende Funktion: C-/C++-Quelltext 1 bool IsActive() { return (GetForegroundWindow() == m_hWnd); } Aber dieser Status wird jeden Frame abgefragt. Die Alternative wäre, eine Variable zu haben, die bei jeder WM_ACTIVATE neu gesetzt wird. Manchmal wird aber die WM_ACTIVATE nicht richtig empfangen: z.b. wenn man das Fenster per doppel-mausklick in der Taskleiste minimiert, maximiert und wieder minimiert wird.. I...
Hallo, in vielen Foren wird abgeraten, zuviele D3DX Funktionen zu verwenden und stattdessen eigene Routinen zu programmieren. Warum sollte man diese Funktionen nicht benutzen? Ich habe bisher keinen Nachteil feststellen können... MfG, Max
Wenn ich DISCL_NONEXCLUSIVE angebe, wird der Cursor angezeigt. Aber kann man einen Cursor auch mit DISCL_EXCLUSIVE benutzen, oder ist das grundsätzlich nicht möglich? Welche Vor- bzw. Nachteile haben eigentlich DISCL_EXCLUSIVE / DISCL_NONEXCLUSIVE für die Maus? In der Doku von MS steht dazu nichts genaueres.. Kann es sein, dass DISCL_EXCLUSIVE die einzige Auswirkung hat, dass absolut kein Mauszeiger angezeigt wird??
Die Funktionen geben alle D3D_OK zurück ...
Hallo, ich versuche einen eigenen Mauszeiger anzuzeigen: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 // Initialisieren: if (dev->CreateOffscreenPlainSurface(32, 32, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &m_pSurface, NULL) != D3D_OK) return false; if (D3DXLoadSurfaceFromFile(m_pSurface, NULL, NULL, m_pszFile, NULL, D3DX_FILTER_NONE, 0, NULL) != D3D_OK) return false; if (dev->SetCursorProperties(m_xHotSpot, m_yHotSpot, m_pSurface) != D3D_OK) return false; dev->ShowCursor(true); // Beim Rendern: dev->SetCursorP...
Ok, das Problem ist gelöst Man muss die Surface erst nach XRGB mit D3DXLoadSurfaceFromSurface konvertieren, dann kann sie mit D3DXSaveSurfaceToFile in ein png gespeichert werden. Das ganze ist ein Bug im DX SDK, der seit April 06 besteht und noch nicht behoben worden ist.
Wenn man die PNG Datei mit dem DX Texture Tool öffnet und mit "Format" / "Change Surface format" das Format von ARGB auf XRGB ändert, ist der Screenshot sichtbar. Es scheint also, als ob D3DXSaveSurfaceToFile den Alpha-Channel nicht richtig speichert. Ich habe per google herausgefunden, dass dieses Problem seit dem DX SDK April 2006 besteht und wie es scheint immer noch nicht behoben wurde: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=389823&SiteID=1 Aber wie kann ich das Problem nun um...
Ich habe jetzt mal durchgetestet: Es funktionieren folgende Formate: BMP, DDS, DIB, HDR, JPG, PFM und TGA. Bei PPM wird mir ausgegeben, dass es nicht funktioniert hat - Das ist OK, denn laut der Beschrreibung der Funktion D3DXSaveSurfaceToFile geht dieses Format sowieso nicht. Somit funktionieren also alle Formate bis auf png... Woran könnte das nur liegen?