000
13.01.2012, 18:18 Uhr
~Christian R
Gast
|
Hallo! Ich möchte ein Programm erstellen, welches in einer Unendlichen Schleife, eine Bitmap in der Konsole hin- und herbewegt. Habe dazu im Internet eine Funktion gefunden, mit der man eine Bitmap Datei auf die Konsole "malen" kann (Leider nur quadratisch). So nun habe ich folgendes Problem: Das Programm funktioniert eigentlich wunderbar, nur dass nach ca. 10-15 Sek. die Konsole einfach Schwarz bleibt, woran liegt das?
Ich benutze Dev-C++ 4.9.9.2 unter WinXP
Mein Quellcode: (linker libgdi32 und "Figur.bmp" erstellen mit z.B. den Maßen 10x10 Pixel)
C++: |
#include <windows.h> #define RECHTS 1 #define LINKS 2
void drawImage(char *szBitmap,int PosX, int PosY) { HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,szBitmap, IMAGE_BITMAP,0,0,LR_LOADFROMFILE); BITMAP bmp; GetObject(hBitmap,sizeof(bmp),&bmp); HWND hwnd = FindWindow("ConsoleWindowClass",NULL); HDC hDC = GetDC(hwnd); HDC hBitmapDC = CreateCompatibleDC(hDC); SelectObject(hBitmapDC,hBitmap); BitBlt(hDC,PosX,PosY,bmp.bmHeight,bmp.bmWidth,hBitmapDC,0,0,SRCCOPY); DeleteObject(hBitmap); ReleaseDC(hwnd,hBitmapDC); ReleaseDC(hwnd,hDC); }
int main() { HWND hwnd = FindWindow("ConsoleWindowClass",NULL); int x = 0, y = 0; int richtung = RECHTS; while(1) { drawImage("Figur.bmp", x, y); Sleep(5); InvalidateRect(hwnd, 0, true); if(richtung == RECHTS)x++; if(richtung == LINKS)x--; if(x >= 100)richtung = LINKS; if(x == 0)richtung = RECHTS; } }
|
----- Edit: cpp-Tags eingefügt, nächstes mal bitte selber machen. Dieser Post wurde am 13.01.2012 um 20:13 Uhr von Hans editiert. |