Flotte Spiele

Message-Pump

Die Implementation einer solchen Message Pump Das Programm im Verzeichnis \Quellen\DirectX\DirectX zeigt die Implementation einer solchen Message Pump Hier wird auf die API Funktion PeekMessage zurückgegriffen die die nächste Nachricht der Anwendung einliest und anschlie end über einen Aufruf von TranslateMessage und DispatchMessage an das Zielfenster weiterleitet Was diese Funktionen im einzelnen bewirken ist an dieser Stelle nicht weiter wichtig Wichtig ist nur dass der Aufruf von PeekMessage sofort zurückkehrt und über einen Rückgabewert mitteilt ob eine Nachricht zu bearbeiten ist oder nicht Und genau das ist der Punkt an dem ein Programm das Maximum an Performance entwickeln kann In dem Fall dass keine Nachricht zur Bearbeitung ansteht wird einfach das nächste Bild bzw der Frame der Anwendung gezeichnet Dadurch kommt die Zeichenfunktion deutlich häufiger zum Zuge und die Anwendung arbeitet mit Full Speed Die eigene Message Pump innerhalb von Sub Main hebelt allerdings den Standard Nachrichtenmechanismus von Visual Basic aus so dass eine Beendigung des Programms durch einfaches Schlie en des Hauptfensters nicht mehr möglich ist Soll die Anwendung beendet werden muss vielmehr dafür gesorgt werden dass beim Schlie en des Hauptfensters die Methode PostQuitMessage aufgerufen wird Dieser Befehl platziert die Nachricht zum Beenden der eigenen Anwendung in die Anwendungswarteschlange wodurch die Schleife der Message Pump verlassen und das Programm beendet wird Vollbildanwendungen DirectDraw Anwendungen innerhalb eines separaten Fensters fügen sich zwar nahtlos in die Windows Oberfläche ein allerdings arbeitet DirectDraw beim Rückgriff auf ein Fenster noch unter seinen Möglichkeiten Richtig rund geht es wenn DirectDraw die Kontrolle über den gesamten Bildschirm übernehmen kann Allerdings ist die Programmierung einer Vollbildanwendung etwas aufwendiger Obwohl eine Vollbildanwendung in gro en Teilen identisch zu einer Fensteranwendung ist sind die Unterschiede im Detail recht deutlich Das beginnt bereits beim Aufruf von SetCooperativeLevel Anstelle von DDSCL_NORMAL wird hier der zusammengesetzte Wert DDSCL_FULLSCREEN Or DDSCL_ALLOWMODEX Or DDSCL_EXCLUSIVE aufgerufen um die exklusive Kontrolle über den gesamten Bildschirm zu erlangen An den Aufruf von SetCooperativeLevel schlie t sich der Aufruf der Methode SetDisplayMode an Hier wird festgelegt in welcher Grafik und Farbauflösung der Vollbildmodus arbeiten soll Const ScreenWidth Const ScreenHeight Const screencolors dd SetCooperativeLevel _ Form hwnd DDSCL_FULLSCREEN _ Or DDSCL_ALLOWMODEX Or _ DDSCL_EXCLUSIVE dd SetDisplayMode ScreenWidth ScreenHeight ScreenColors DDSDM_DEFAULT Anschlie end geht es an die Erzeugung des Primary Surfaces Allerdings wird bereits hier Vorsorge für den gepufferten Bildaufbau getroffen in dem nicht nur ein Primary Surface sondern gleichzeitig ein sogenanntes Back oder Flip Surface erzeugt wird Im Gegensatz zum Puffer Surface einer Fensteranwendung in das zunächst das neue Bild gezeichnet wird und das anschlie end über einen recht aufwendigen und in Taktzyklen sehr teuren Blt Befehl in das Primary Surface kopiert wird kann ein Flip Surface durch wenige Befehle direkt zur Anzeige gebracht werden DirectDraw veranlasst dazu einfach die Grafikkarte auf Befehl zwischen Primary und Flip Surface umzuschalten Nicht das aufwendige Kopieren von Grafikspeicher allein das Umprogrammieren des Grafikchips führt zur Anzeige der im Hintergrund aufgebauten Grafik Weil hier zwei darstellbare Buffer Surfaces verwendet werden spricht man bei diesem Verfahren vom Double Buffering Um das Primary Surface und das zugehörige Flip Surface bzw den nicht flackernden Backbuffer zu erzeugen werden die folgenden Codezeilen verwendet primaryDesc lFlags _ DDSD_CAPS Or DDSD_ BACKBUFFERCOUNT primaryDesc ddsCaps lCaps _ DDSCAPS_PRIMARYSURFACE _ Or DDSCAPS_FLIP Or _ DDSCAPS_COMPLEX primaryDesc lBackBufferCount _ Set primarySurface _ dd CreateSurface primaryDesc backCaps lCaps _ DDSCAPS_BACKBUFFER Set backSurface _ primarySurface GetAttached Surface backCaps

P
Computerwissen komplett aus einer Hand

Dies ist eine Nickles-Premium Seite

Der Inhalt dieser Seite ist nur Nickles Mitgliedern zugänglich. Bitte melden Sie sich mit Ihrem Premium-Account an, um diese Seite lesen zu können.

Sollten Sie bisher noch nicht über einen Account verfügen, so können Sie sich hier einen erstellen und erhalten damit Zugriff auf das gesammelte Computerwissen, alle Artikel, Tipps und vieles mehr. Zusätzlich sehen Premium-Mitglieder Nickles werbefrei.

  • Probleme mit Hard und Software müssen nicht mehr sein
  • Nickles liefert seit über 15 Jahren geballtes Wissen
  • Unverzichtbare Artikel, verständlich für alle
  • Wertvolle Tipps die bares Geld sparen
  • Schluss mit Suchen - alles hier aus einer Hand
  • Zuverlässige Profi-Informationen statt Blabla
  • Hier gibt es Zugriff auf über 2 Millionen Webseiten geballtes Computerwissen zum Schnäppchenpreis
Computerwissen komplett aus einer Hand (Angebot 1)

UNABHÄNGIG, EHRLICH, VERSTÄNDLICH

Drei Worte. Die schreiben wir nicht nur, das meinen wir auch so! Nickles-Artikel liefern konkrete unbestechliche Informationen. Egal ob für PC-Laie oder PC-Profi: auf Nickles-Infos ist Verlass! Bereits ein einziger Nickles-Artikel kann helfen, viel Zeit und Geld zu sparen!

  • Probleme mit Hard und Software müssen nicht mehr sein
  • Nickles liefert seit über 15 Jahren geballtes Wissen
  • Unverzichtbare Artikel, verständlich für alle
  • Schluss mit Suchen - alles hier aus einer Hand
  • Zuverlässige Profi-Informationen statt Blabla
  • Hier gibt es Zugriff auf über 2 Millionen Webseiten geballtes Computerwissen zum Schnäppchenpreis

Allgemeine Geschäftsbedingungen

Wir hassen lange AGB mit fiesem Kleingedrucktem. Drum sind unsere kurz und einfach - bitte sorgfältig durchlesen:
AGB - Allgemeine Geschäftsbedingungen

Bestellformular ausfüllen

Die Abrechnung der 59,95 Euro für 12 Monate erfolgt einfach per Rechnung auf dem Postweg. Dazu benötigen wir die Anschrift. Bitte alle Felder ausfüllen!

Mit * markierte Felder werden für die Bearbeitung der Bestellung benötigt und müssen ausgefüllt werden.
Hinweis: Nickles.de gibt Daten niemals weiter! Sie dienen nur für unsere interne Abwicklung der Mitgliedschaft.

Gesamtpreis: 59,95 Euro für 12 Monate
(inklusive 7 Prozent MwSt, 3,92 Euro auf 56,03 Euro)
Vereinbarungen: Widerrufsrecht: Diese Bestellung kann gemäß AGB innerhalb von zwei Wochen widerrufen werden.

Mindestlaufzeit: 12 Monate

Verlängerung: Wird nicht spätestens drei Monate vor Ablauf der Abrechnungsperiode gekündigt, verlängert sich die Premiummitgliedschaft um 12 Monate zum Preis von 59,95 Euro.
Abrechnungsperiode dann alle 12 Monate.