Grundlagen


Stellen wir uns einmal folgende Situation vor: Auf dem Desktop wird ein Fenster angezeigt. Weil Windows ein Multitasking-Betriebssystem ist, kann es ohne weiteres mehrere Programme/Prozesse mit ihren Fenstern verwalten. So weit so gut. Aber was passiert mit unserem Fenster, wenn ein zweites geöffnet und das erste Fenster dadurch ganz oder teilweise überdeckt wird?

Stellen wir uns den Desktop als großes Bitmap vor. Wird nun das zweite Fenster angezeigt, werden einfach die entsprechenden Pixel geändert, so dass sie das neue Fenster ergeben. Was passiert jetzt aber, wenn das zweite Fenster geschlossen wird? Da müsste ja wieder unserer erstes Fenster sichtbar werden. Damit aber nun kein weißer Fleck zurückbleibt, weist Windows unser Fenster an sich neu zu zeichnen. Die Nachricht, die Windows in diesem Fall schickt, heißt "WM_PAINT". Das bedeutet für uns, dass alle Zeichenoperationen im "WM_PAINT"-Zweig unserer Fensterprozedur ablaufen müssen; sonst haben wir keine Möglichkeit nach Aufforderung von Windows, unser Fenster zu aktualisieren.


GDI-Funktionen

  1. Funktionen zum Anfordern oder Freigeben von Gerätekontexten.
    Um zeichnen zu können, muss man sagen wohin gezeichnet werden soll, und das ist unser Gerätekontext. Also praktisch unser Zugang zur Zeichenfläche.
  2. Abfragen von Informationen über den Gerätekontext
  3. Zeichenfunktionen
  4. Funktionen zum Setzen und Abfrage von Attributen
    Unter Attribut wird hier eine Einstellung verstanden, unter der nachfolgende Zeichenoperationen beeinflusst werden; etwa das Setzen der Textfarbe.
  5. Funktionen zum Arbeiten mit GDI-Objekten
    GDI-Objekte erzeugt man zum Beispiel mit "CreatePen", "CreatepenIndirect" usw. Das Prinzip ist dann folgendes: Im Gegensatz zu "SetTextColor", welchem man direkt einen Gerätekontext (DC, HDC) mitgibt, erzeugen die GDI-Objekte selbst einen DC, den man dann mittels "SelectObject" in den jeweiligen DC einwählt. Ab da werden dann alle Zeichenoperationen mit diesem, so gesetzten Attribut ausgeführt.