Jede sekunde ein bild zeigen?



  • hallo zusammen!

    Meine Frage ist, wie ich
    in der Console jede sekunde ein bild zeigen kann? sie sollen alle übereinander gezeigt werden und achdem alle bilder abgespielt wurden anzeigen, wie lange
    die 'show' gedauert hat ( das ist ja einfach, da man die sekunden wohl in einem integer speichern muss...)

    Danke für jeeede hilfe!
    martinustreveri



  • #include <windows.h>
     #include <stdio.h>
     //#pragma comment(lib,"gdi32.lib")
    
     int LoadBmp2Console(char *szBitmap, int PosX, int PosY)
     {	
       HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,szBitmap,
     					 IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 
       if (!hBitmap) return 1; 
    
       BITMAP bmp; 
       GetObject(hBitmap,sizeof(bmp),&bmp); 
    
       HWND hwnd = FindWindow("ConsoleWindowClass",NULL);
       if (!hwnd) return 2;
    
       HDC hDC = GetDC(hwnd);   
       if (!hDC) return 3; 
    
       HDC hBitmapDC = CreateCompatibleDC(hDC); 
       if (!hBitmapDC) return 4; 
    
       SelectObject(hBitmapDC,hBitmap); 
    
       BitBlt(hDC,PosX,PosY,bmp.bmHeight,bmp.bmWidth,hBitmapDC,0,0,SRCCOPY);  
    
       DeleteObject(hBitmap); 
       ReleaseDC(hwnd,hBitmapDC); 
       ReleaseDC(hwnd,hDC);
    
     return 0;
     }
    
     int main() 
     {	 
       int Status = LoadBmp2Console("bitmap.bmp",10,10);
       if(Status!=0)printf("Fehler: %i",Status);  
    
       getchar();  
       return 0; 
     }
    

    Tja, dass mit den Sekunden musste nun selber herausfinden ;-).
    www.gidf.de


  • Administrator

    Also manchmal sollte man gewissen Leuten verbieten zu helfen. Dieser Code ist ja ... einfach nur, nicht nur schlecht, sondern auch noch in der falschen Sprache. Das ist C, hat gar kein C++ drin.
    Zudem, wieso wird da FindWindow verwendet? Es gibt ein GetConsoleWindow!
    Auch die Verwendung von char* ist sehr fehleranfällig. Da wäre ein char const* deutlich besser.

    Und das schlimmste an dem Code. Einmal das Fenster verschieben oder Scrollen und das Bild ist weg! Also ist er völlig nutzlos!

    @martinustreveri,
    Bevor man dir helfen möchte, müsste man erfahren, wieso du sowas in einer Konsole ausgeben möchtest. Grundsätzlich ist das völlig verkehrt. Ein Bild gibt man nicht in der Konsole aus, sondern in einem Frame oder Dialog. Also müsstest du dich zuerst für eine GUI Bibliothek entscheiden. Und da gibt es so einige.

    Für WinAPI und MFC haben wir je ein eigenes Forum, für alle anderen gibt es ein gemeinsames.
    Hier gibt es eine Zusammenstellung von GUI Bibliotheken:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-81596.html

    Grüssli



  • Dravere schrieb:

    Also manchmal sollte man gewissen Leuten verbieten zu helfen. Dieser Code ist ja ... einfach nur, nicht nur schlecht, sondern auch noch in der falschen Sprache. Das ist C, hat gar kein C++ drin.

    Dravere schrieb:

    Zudem, wieso wird da FindWindow verwendet? Es gibt ein GetConsoleWindow!

    das gleiche gilt fuer dich dann aber auch. was hat 'GetConsoleWindow' mit C++ zu tun ?

    Meep Meep



  • Meep Meep schrieb:

    Dravere schrieb:

    Also manchmal sollte man gewissen Leuten verbieten zu helfen. Dieser Code ist ja ... einfach nur, nicht nur schlecht, sondern auch noch in der falschen Sprache. Das ist C, hat gar kein C++ drin.

    Dravere schrieb:

    Zudem, wieso wird da FindWindow verwendet? Es gibt ein GetConsoleWindow!

    das gleiche gilt fuer dich dann aber auch. was hat 'GetConsoleWindow' mit C++ zu tun ?

    Meep Meep

    Es ging nicht um die API, sondern den Programmierstil..



  • ...also letztlich nur um die eine Zeile mit printf statt cout... 😉



  • _matze schrieb:

    ...also letztlich nur um die eine Zeile mit printf statt cout... 😉

    + (vor allem) Header und den Fehlerbehandlungsstil. (Ich möchte hier aber nicht schon wieder eine leidige C vs. C++ oder exceptions vs. return value. Gabs schon genug..)



  • drakon schrieb:

    Ich möchte hier aber nicht schon wieder eine leidige C vs. C++ oder exceptions vs. return value. Gabs schon genug..

    Einverstanden! 😉


  • Administrator

    Meep Meep schrieb:

    das gleiche gilt fuer dich dann aber auch. was hat 'GetConsoleWindow' mit C++ zu tun ?

    Das erste, was ich angemeckert habe, ist, dass es in der falschen Sprache ist.
    Aber auch wenn man davon absehen würde, dann wäre der Code immer noch schlecht. Das meinte ich damit. Es ist nicht mal korrekt verwendetes WinAPI. Der Code ist schlicht und einfach gesagt: Nutzlos!

    Es tut mir leid, wenn ich so angriffig bin, aber es ist doch wahr. Was soll so eine Hilfestellung? Die nutzt dem Threadersteller überhaupt nichts.

    Grüssli



  • C-Style rockt und es funktioniert ;-D.



  • way schrieb:

    C-Style rockt und es funktioniert ;-D.

    Funktionieren tut auch eine Landung eines Flugzeuges mit nur einem Flügel. Ob es eine gute Idee, sicher usw. ist, ist eine andere Frage.



  • drakon schrieb:

    way schrieb:

    C-Style rockt und es funktioniert ;-D.

    Funktionieren tut auch eine Landung eines Flugzeuges mit nur einem Flügel. Ob es eine gute Idee, sicher usw. ist, ist eine andere Frage.

    Ich wäre da auch eher für die Option: Ewig in der Luft bleiben. Nur die Schwerkraft könnte da irgendwas gegen haben. 😃


  • Administrator

    way schrieb:

    C-Style rockt und es funktioniert ;-D.

    Nein, es funktioniert eben nicht! Das ist ja das schlimmste am Ganzen! Schieb mal ein Fenster darüber oder Scroll die Sache, was der Threadersteller ja machen will ... ZACK Bild ist weg. Du hast vergessen, dass es einen Message Loop bei Windows gibt und man bei der WM_PAINT Nachricht zeichnen muss, damit sowas auch bleibt. Nur wirst du wahrscheinlich mühe haben, bei einer Konsole auf die WM_PAINT Nachrichten reagieren zu können, da du keine Kontrolle über die WNDCLASS hast.

    Desweitern, wer sagt, dass der Threadersteller Windows verwendet?

    Grüssli



  • Dravere schrieb:

    Desweitern, wer sagt, dass der Threadersteller Windows verwendet?

    Die Art wie er fragt? 😃



  • Dravere schrieb:

    Also manchmal sollte man gewissen Leuten verbieten zu helfen. Dieser Code ist ja ... einfach nur, nicht nur schlecht, sondern auch noch in der falschen Sprache. Das ist C, hat gar kein C++ drin.
    Zudem, wieso wird da FindWindow verwendet? Es gibt ein GetConsoleWindow!
    Auch die Verwendung von char* ist sehr fehleranfällig. Da wäre ein char const* deutlich besser.

    Und das schlimmste an dem Code. Einmal das Fenster verschieben oder Scrollen und das Bild ist weg! Also ist er völlig nutzlos!

    @martinustreveri,
    Bevor man dir helfen möchte, müsste man erfahren, wieso du sowas in einer Konsole ausgeben möchtest. Grundsätzlich ist das völlig verkehrt. Ein Bild gibt man nicht in der Konsole aus, sondern in einem Frame oder Dialog. Also müsstest du dich zuerst für eine GUI Bibliothek entscheiden. Und da gibt es so einige.

    Für WinAPI und MFC haben wir je ein eigenes Forum, für alle anderen gibt es ein gemeinsames.
    Hier gibt es eine Zusammenstellung von GUI Bibliotheken:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-81596.html

    Grüssli

    Eigentlich hat mir nur Dravere geholfen 😞
    ´
    @Dravere:

    Danke, ich habe mnir mal WinAPI angesehen, finds gut...
    auf jeden fall melde ich mich nomma wenn ich soweit in (mit bildern un so xD)

    BaBa
    martinustreveri xD



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten