Ressourcen Problem

rueD

Grünschnabel
Hallo ! Ich hab mir mit dem Fractal Programm Apophysis ein Fractal erstellt welches aus 100
Sequenzen im *bmp Format besteht . Diese möchte ich nun in einem Programm abspielen.

Code:
	PAINTSTRUCT Ps;
	HDC hDC,MemDCBuffer;
	HBITMAP bmpflame;
	HFONT font;
	
	const int ID_TIMER = 1;
    char Bitmap[256]="IDB_BITMAP";
    char countchar[256];

    ret = SetTimer(hWnd, ID_TIMER,200,(TIMERPROC) NULL);
	if(ret == 0){
		MessageBoxW(hWnd, L"Could not SetTimer()!", L"Error", MB_OK | MB_ICONEXCLAMATION);}


    switch(msg)
    {
	case WM_TIMER:

sprintf_s(countchar,"%d",count); 
strcat_s (Bitmap,countchar);

		count++;
		if(count==100){count=1;}

 hDC = GetDC(hWnd);
 	  
	    bmpflame = LoadBitmap(hInst, MAKEINTRESOURCE(Bitmap));
	    MemDCBuffer = CreateCompatibleDC(hDC);            
        SelectObject(MemDCBuffer, bmpflame);

	 
	    BitBlt(hDC, 0, 0, 1280, 1024, MemDCBuffer, 0, 0, SRCCOPY);

	 
	    DeleteDC(MemDCBuffer);
	    DeleteObject(bmpflame); 

	return 0;
    break;

Was hier passiert ist simpel.
Ein Timer ist vorhanden um die Sequenzen im genauen abstand darzustellen.
Aus
sprintf_s(countchar,"%d",count);
strcat_s (Bitmap,countchar);

wird IDB_BITMAP+count

und hier liegt das Problem:

bmpflame = LoadBitmap(hInst, MAKEINTRESOURCE(Bitmap));

anscheinend hat LoadBitmap ein problem mit char[] , denn wenn ich anstelle von
MAKEINTRESOURCE(Bitmap)
MAKEINTRESOURCE(IDB_BITMAP1) einsetze wird mir das Bild wunder bar dargestellt.

Hat irgendjemand ein Lösungsvorschlag zu diesem Problem?
 
Du lädst aus den Resourcen ... dann nimmst du IDs und lässt per MAKEINTRESOURCE einen String daraus generieren ...

Du müsstest schon hingehen und den Bitmaps aufeinanderfolgende IDs zuweisen und dann ist IDB_BITMAP1 + 1 das 2. Bild usw ...
 
Japp genau das hab ich ja .

blos möchte ich nicht 100 x

bmpflame = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
bmpflame = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2));
bmpflame = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP3));

... usw ...

schreiben . So dachte ich mir ich mache das in einem abwasch mit dem char[]Bitmap.
Dieser beeinhalten das Wort "IDB_BITMAP" und die nummer wird dann dazu geschrieben.

€DiT: Du bist mein Held! Beim 2. durchlesen deines post ist es mir erst aufgefallen. Das war einfacher als ich gedacht hab.

bmpflame = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1+count));

so simple kann programmieren sein.


Zur erläuterung. Die Bitmaps sind aller korrekt in der resource.h eingetragen und haben Ihre ID´s.
 
Zuletzt bearbeitet:
Zurück