HBITMAP -> CBITMAP ?

Ferdinand_Stehle

Grünschnabel
Hallo alle zusammen!

Ich brauche für ein Aniamtionsprogramm (VC++6, MFC) eine Funktion, die Bitmaps rotiert. Bei CodeGuru habe ich dann welche gefunden. Leider habe ich keine Ahnung von Handles.
Diese Funktioniert so:

hbmp = GetRotatedBitmapNT(hbmp,angle,color);

Diese Funktion will ich in folgenden Code einbauen:
Code:
	CDC	TempDC;
	TempDC.CreateCompatibleDC(pDC);
	TempDC.SelectObject(cbitmap);

	pDC->BitBlt(x, y, breite, hoehe, &TempDC, 0, 0, SRCCOPY);

Doch wie wandle ich ein CBitmap zu einem HBitmap?
Und wie wieder zurück?
Funktioniert ein Handle wie ein Zeiger?
 
Ein CBitmap kapselt ein HBITMAP.

Um an das HBITMAP einer CBitmap zu kommen kannst du es einfach einsetzen, CBitmap hat einen cast-operator auf HBITMAP.

Umgekehrt ist nicht ganz so sauber, geht aber auch:

CBitmap* pBmp = CBitmap::FromHandle( hBitmap );

Achtung, falls hBitmap vorher kein CBitmap hatte, ist pBmp nur temporär gültig!

Das Handle ist Windows-intern vermutlich ein Zeiger auf ein Struct, aber das siehst du nach aussen nicht. Benutze es wie eine ID.
 
Danke! Ich habe benutze jetzt einen Cast Operator für die Erstellung des HBITMAP Handles und ich benutze deinen Code für die erstellung der CBitmap.
Code:
	HBITMAP hbmp = (HBITMAP)(*bmp);
	
	hbmp = GetRotatedBitmapNT(hbmp,1,RGB(0,0,0));

	CBitmap* pBmp = CBitmap::FromHandle( hbmp);
Es funktioniert! Vielen Dank!
 
Zurück