[C++] Zeichnen im Bildschirmschoner

Jellysheep

Erfahrenes Mitglied
Hi,
ich habe gerade einen Beispielbildschirmschoner ausprobiert:
Code:
#include "stdafx.h"
#include <windows.h>
#include <scrnsave.h>
#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "scrnsave.lib")


UINT timer_id;
int r,g,b = 50;

long WINAPI ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam)
{
    HDC dc;
    dc = GetDC(hWnd);
    char hallo[] = "Hallo Welt";

    switch(message)
    {
        case WM_CREATE:
               SetTimer(hWnd,timer_id,100,NULL);
               break;

        case WM_TIMER:
               SetBkColor(dc,RGB(0,0,0));
               SetTextColor(dc,RGB(r,g,b));
               TextOut(dc,300,250,hallo,strlen(hallo));

               r+=5;
               b+=10;
               g+=2;
               break;
    }
    return DefScreenSaverProc(hWnd,message,wParam,lParam);
}

BOOL WINAPI ScreenSaverConfigureDialog(HWND hWnd,UINT message,WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_INITDIALOG:
               return TRUE;

        case WM_COMMAND:
               switch(LOWORD(wParam))
               {
                   case IDOK:
                        EndDialog(hWnd,0);
                        return TRUE;

                   case IDCANCEL:
                        EndDialog(hWnd,0);
                        return FALSE;
               }
               break;

        case WM_CLOSE:
               EndDialog(hWnd,0);
               return TRUE;
    }
    return FALSE;
}

BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
	MessageBox(NULL, "Dieser Bildschirmschoner hat keine Einstellungen", "Warnung", MB_ICONINFORMATION);
    return TRUE;
}
Und ich möchte jetzt erst mal lernen, Linien usw. zu zeichnen. Ich hab es schon geschafft, mit
Code:
POINT p[4];
	p[0].x = 100;
	p[0].y = 100;
	p[1].x = 200;
	p[1].y = 100;
	p[2].x = 200;
	p[2].y = 200;
	p[3].x = 100;
	p[3].y = 200;
	Polygon(dc, p, 4);
ein weißes Quadrat auszugeben, aber ich weiß nicht, wie ich Farbe und Rahmen ändern kann, und mit Polyline komme ich nicht zurecht.
Hat jemand einen Code, der bestimmte (farbige) Polylines oder Polygones zeichnet?
 
Hallo,

zuallererst: gezeichnet wird immer bei der WM_PAINT-Message. Falls du über einen Timer periodische Zeichenoperation anstoßen willst, setze dort nur entsprechende Statusvariablen und erzwinge das Zeichnen mit "Invalidate()".

Ansonsten schaue mal in
dieses Tutorial hinein. Speziell die Abschnitte "GDI Fundamental Shapes" und "GDI Tools: Pens" dürften für deine aktuelle Frage interessant sein.

Gruß
MCoder
 
Zurück