Auf den Desktop zeichnen
Posted by Hobby Programmierer | Posted in Artikel, WinAPI, Windows | Posted on 11-09-2008
Tags: cpp, desktop, tutorial, win, win32, WinAPI, windows
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:
Dann müssen wir mithilfe einer Funktion dieses Handle ausfüllen. Wer sich mit Windowsprogrammen auskennt, kennt vielleicht Funktionen wie
Wir werden für unser Handle die Funktion
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
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:
- Rectangle(hdc, xLeft, yTop, xRight, yBottom);
- Ellipse(hdc, xLeft, yTop, xRight, yBottom);
- RoundRect(hdc, xLeft, yTop, xRight, yBottom, xCornerEllipse, yCornerEllipse);
- 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



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.