Gaaanz einfach Bildschirmschoner

teekanne

Grünschnabel
Huhu bin neu hier und wollte mal fragen wie ich einen Screensaver erstelle ,bei dem ich lediglich einen Text eingebe der zunächst von Rechts nach Links wandert und dann von Links nach Rechts !

Hab mir zwar Tutorials durchgelesen ,hab aber dennoch fast nix kapiert :(
 
Also ein screensaver ist ein Programm das bei der config ohne paramter und beim start mit dem parameter /S aufgerufen wird... das ist eigendlich alles was du wissen musst...

Nun gehst du her, erstellst z.B. mit DirectDraw irgendwas, oder machst dir n vollbild fenster.. und schon gehts los...
 
äh... mit linux screensavern hab ich mich bisher nicht auseinandersetzen müssen, hatte die ehre bisher nur bei Windows...

Anyway (nein nicht die jugengruppe), screensaver sind auf 99.9% der rechner reine spielerei.
 
nene..ich will das ding ja mit borland c++ programmieren ( also mit konsolen experte oder wie das heißt )..halt so mit schleifen und so..

ich hab ne wette mit nem kumpel laufen ,dass ich das auch ohne komplizierte zusatzprogramme hinbekomme ^^

aber schonma danke für die hilfe :)
 
Das hat Dir doch chibisuke ganz einfach erklärt! Dafür brauchst Du ganz sicher keine Zusatzprogramme sondern Zusatzbibliotheken um die Grafik unter Windows darzustellen. Dafür gibt es halt keine ISO standardisierten Funktionen, denn es handelt sich um Betriebssystem-spezifische Routinen (in dem Fall DirectDraw)

:offtopic:
Teekanne auch Du musst dich an die Netiquette unseres Boards halten!
 
Tut mir leid wenn ich gegen die Nettiquette verstoßen haben sollte ! sry :)

Ich versteh halt nur Bahnhof und das ärgert mich ein bißchen ( Direct Draw zb ?! ) :(

Ich hab nur gedacht ,dass man halt einfach so..öhm..naja..
so wie

char text;
cout << "Text eingeben bitte";
cin >> text;

Und dieser Text dann einfach durch den Bildschirm läuft :/
 
Hihi konsole? vergiss es, das sieht nur unschön aus, Vor allem weil du weder einfach Mouseevents abfangen kannst für das beenden, noch du die Konsole per API einfach mal vollbild schieben kannst, von Sauberem beenden durch Windows gar nicht zu Reden...

mach lieber n GUI App, eben entweder mit GDI oder mit DirectDraw..
GDI ist das Windows Eigene Graphik system, DirectDraw ist das Graphik system das von DirectX zur verfügung gestellt wird, und sehr Schnellen zugriff auf die Graphikhardware ermöglicht.

Aber es ist nicht so schwer,..

So die Grundsätzliche vorgehensweise:
  • Parameter Prüfen, Eventuell im eigenschaftsmodus Starten. (fals vorhanden)
  • Fenster in der größe des Bildschirms erstellen
    du kannst mit GetSystemMetrics() die größe des Bildschirms ermitteln, und damit weißt du auch wie groß das Fenster sein muss, entsprechend natürlich position 0,0 und, äh natürlich keine Styles, du willst ja ein Sauberes Fenster zum zeichnen
  • Eventuell, je nach gewünschter Arbeitsweise DirectDraw initialisieren. (ACHTUNG: DirectX SDK installieren ;-))
  • PrimarySurface und Backbuffer erstellen, bei GDI natürlich nur Backbuffer, weil PrimarySurface is ja schon da.... bei DDraw eine Flipping Chain Bilden, sofern DDraw im exklusiv mode leuft
  • Fensternachrichten verarbeiten, Timer objekt festlegen um eine Schöne Animation zu erhalten, bei WM_PAINT kann es sein, das es Sekunden dauert bis die Nachricht kommt, je nach Rechenlast. Dabei BitBlt oder eqivalente benutzen
    Nachdem das Zeichnen abgeschlossen ist ein flip() ausführen, oder den Backbuffer auf das PrimarySurface Blitten, je nachdem.
  • bei jedem Timer event Zeichnen
  • Maus und Tastaturevents verarbeiten und mit einem DestroyWindow() beantworten
  • WM_DESTROY abfangen und alle resourcen frei geben... dazu gehöhrt auch DirectDraw frei zu geben, alle eventuellen Fenster wieder auf ihr GDI interface zurück zu stellen und den Timer zu Zerstören.
  • PostQuitMessage(); aufrufen um den Screensaver sauber zu beenden.

[edit mod=joki]
Ich habe nur die vB List-Tags eingefügt, weil der Inhalt der Übersicht so besser zu überblicken ist!
[/edit]
 
Zuletzt bearbeitet von einem Moderator:
ach komm so schwer isses dann auch wieder net...

http://www.gamedev.net/reference/articles/article608.asp

Das sollte dir eigendlich im Großen und Ganzen zeigen wie man Direct Draw initialisiert, wie man die Surfaces Anlegt, wie man Bilder in die Surfaces bekommt (Text geht dann mittels eines HDC auch relativ einfach), Wie man Surfaces übereinander blittet, und wie man das ganze wieder sauber Abschaltet und Freigibt.

Ein tip noch zum verständniss: DirectDraw wird über ein Com objekt namens IDirectDraw angesprochen, stell dir einfach vor das ist ne klasse von der du n objekt bekommst.
 
Zurück