Konsolen Anwendung kann Bmp aber wie gehts besser´?



  • Hab im I-Net folgenden Code gefunden und er funzt auch super nur das Problem das sich mir stellt ist. Wie kann ich die Bitmap Datei im Vollbild Modus anzeigen lassen ohne das sie beim maximieren verschwindet?

    #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; 
    }
    

    Desweiteren wäre eine kleine Funktion zu wiederzeichen interressant. Wenn man den Scroll Balken bewegt verschwindet das Bild logischer Weise.
    Wie kann ich das verhindern?

    Bitte antwortet und gebt Tips..
    😕



  • hmm, warum läßt du die funktion nicht in einer schleife laufen? so wirds immer neu gezeichnet. die variablen sind ja lokal, dürfte also keine probs. geben.

    :xmas2:



  • VirtualDreams schrieb:

    hmm, warum läßt du die funktion nicht in einer schleife laufen? so wirds immer neu gezeichnet. die variablen sind ja lokal, dürfte also keine probs. geben.

    :xmas2:

    Bis auf das, dass das Bild dann flackert, weil es ständig neu gezeichnet wird.

    @HarlekinAlpha
    Du musst die entsprechenden "Events" (maximieren, wiederherstellen, scrollen) abfangen und dann deine Zeichenroutine aufrufen.



  • Das klappt aber nicht.

    Denn im Vollbilkd klapts nicht oder läufts bei dir Harlekin?



  • Wegen dem ständig flackern: Sagt euch der Begriff "double Buffer" etwas? 😉



  • BloodLord schrieb:

    Wegen dem ständig flackern: Sagt euch der Begriff "double Buffer" etwas? 😉

    Damit lässt sich vielleicht das Flackern verhindern, aber wofür sollte man unnötig ein Bild ständig zeichnen??



  • Hallo,
    wollte mal den obigen Code bei mir ausprobieren, habe dann aber beim compilieren die Meldung "9 unresolved externals" bekommen. Also habe ich die gdi32.lib eingebunden...compiliert und immer noch 4 unresolved externals!

    Hat jemand ne Idee? Was muss ich machen?

    thx, MidnightCoder



  • @MidnightCoder
    Was steht genau in den Fehlermeldungen? Welche Funktionen können nicht verlinkt werden?



  • Hallo,

    @ AJ
    Bei den Fehlermeldungen handelt es ich um die Funktion
    " int LoadBmp2Console(char *szBitmap, int PosX, int PosY) ".

    Fehler: "4 unresolved externals"

    falls du´s noch genauer brauchst, müsste ich nochmal nachschauen (anderer Rechner)... 🙂

    vielen Dank schonmal... :xmas1:

    thx, MidnightCoder 🕶



  • Befindet sich die gdi32.lib auch in deinem Library-Verzeichnis?? Hast du überhaupt eine gdi32.lib? Hast du sie auch richtig ins Projekt eingebunden?



  • AJ schrieb:

    Befindet sich die gdi32.lib auch in deinem Library-Verzeichnis?? Hast du überhaupt eine gdi32.lib?

    Ja. Eigentlich schon, sonst hätte er doch was gesagt oder?
    Und ja, ich hab ein gdi32.lib!

    AJ schrieb:

    Hast du sie auch richtig ins Projekt eingebunden?

    hhmmm, ich hoffe. Ich habe übrigens die Commandline-Version vom VS 6.0 Compiler!
    Aber es waren ja ursprünglich 9 Fehler! Nachdem ich die gdi32.lib eingebunden warens nur noch 4! 😃

    Cu, MidnightCoder



  • Habe es mal mit der Autoren Edition von VS 6.0 probiert und es hat ohne Probs. funktioniert!! 😕

    naja, falls jmd. ne Idee hat 😋

    Cu, MidnightCoder


Anmelden zum Antworten