Auf den Desktop zeichnen

Drucke diesen Post This page as PDF Posted by Hobby Programmierer | Posted in Artikel, WinAPI, Windows | Posted on 11-09-2008

Tags: , , , , , ,

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

4

Einleitung:
In diesem Tutorial möchte ich erklären, wie man mit der Win-API auf dem Desktop zeichnen kann. Es werden folgende Vorkenntnisse benötigt: Bedienung und Umgang mit einem C++ Compiler und Grundkenntnisse in C++.

Hauptteil:
Als Erstes muss man ein neue Windowsanwendung erstellen, mit der wir dann auf den Desktop zeichnen. Wenn man Zeichenaktionen von Windows ausführen will, braucht man einen Gerätekontext für das jeweilige Ausgabegerät, z.b. Drucker, Bildschirm oder das eigene Fenster. Wir wollen aber auf den Desktop zeichnen, also holen wir uns den Gerätekontext des Desktops. Das geht wie folgt: Am Anfang brauchen wir das Handle des Kontextes. Dazu definieren wir eine Variable vom Typ HDC:

Code: C++ | Plain Text
  1. HDC hdc; // Handle für den Gerätekontext

Dann müssen wir mithilfe einer Funktion dieses Handle ausfüllen. Wer sich mit Windowsprogrammen auskennt, kennt vielleicht Funktionen wie

Code: C++ | Plain Text
  1. GetWindowDC(hwnd) ;
  2. GetDC(hwnd);

Wir werden für unser Handle die Funktion

Code: C++ | Plain Text
  1. CreateDC(pszDriver, pszDevize, pszOutput, pData);

benutzen. Den einzigen Parameter den wir unbedingt ausfüllen müssen, ist der erste. Bei den anderen können wir einfach NULL angeben. Wie gesagt müssen wir nur den ersten Parameter umbedingt ausfüllen, und zwar hier einfach nur “DISPLAY”. Damit teilen wir der Funktion mit, dass wir gerne den Gerätekontext für den Desktop haben möchten. Wenn wir den Kontext haben, dürfen wir aber nicht vergessen, ihn am Ende wieder freizugeben, was mit der Funktion

Code: C++ | Plain Text
  1. DeleteDC(hdc);

geschieht, welcher wir einfach nur das Handle des Gerätekontext als Parameter übergeben. Nun können wir also einen Gerätekontext vom Bildschirm erstellen und ihn freigeben. Aber wir können immer noch nicht auf dem Bildschirm zeichnen. Das ist aber einfach und wird sofort erklärt. Wir zeichnen einfach mithilfe von GDI-Funktionen auf den Desktop. Ich zähle jetzt hier nicht alle auf, da man sie auch im Internet, z.B. in der MSDN finden kann.
Hier einige GDI-Funktionen:

Code: C++ | Plain Text
  1. Rectangle(hdc, xLeft, yTop, xRight, yBottom);
  2. Ellipse(hdc, xLeft, yTop, xRight, yBottom);
  3. RoundRect(hdc, xLeft, yTop, xRight, yBottom, xCornerEllipse, yCornerEllipse);
  4. TextOut(hdc, x, y, psText, iLength);

Die Namen der Funktionen sollten eigentlich deren Zweck erklären.
Alle Funktionen erwarten als ersten Parameter ein Handle eines Gerätekontextes, damit sie wissen wohin sie zeichnen sollen.
Wir geben hier also einfach unser zuvor ausgefülltes Handle und die Koordinaten an, und dann sind wir fertig und das Programm kann zeichnen. Ich habe auch noch ein kleines Programm geschrieben, welches genau das macht, was ich Ihnen hier versucht habe beizubringen. Sie können wie immer das Archiv, in dem sich die cpp-Datei des Programms befindet, auch herunterladen. Der Name des Archivs lautet “Display”.

Schlußwort:
Das war es auch schon. Wenn jemand Fragen oder Anmerkungen hat, einfach mir mitteilen.

http://www.codeschleuder.de/wp-content/uploads/2008/09/display.zip

Comments (4)

Hallo,

sehe das Archiv mit der cpp-Datei nicht :-(
Wo ist das?
Würde das Programm gerne ausprobieren :-)

viele Grüße,
Lilli

Ist jetzt da!

Link funzt nicht. 404 error ;)

Ok link wurde behoben. Danke fürs melden.

Write a comment