[WinAPI] GDI+ PNG aus Resource Laden

Womit kann ich AfxFindResourceHandle() ersetzen?
Das kannst du durch
Code:
HMODULE hResInstance;

...

hResInstance= GetModuleHandle(NULL);
ersetzen. Der Parameter NULL bedeutet, dass die Resource in der gleiche EXE wie der Funktionsaufruf liegt.

Das "otherItems.png" am Anfang der Zeile ist der Name für die Resource und der kann beliebig vergeben werden.

Gruß
MCoder
 
Funktioniert leider nicht...


Hier mal den Code:
main.cpp
Code:
{
	HINSTANCE hResInstance;
	HRSRC     hResLocation;
	HGLOBAL   hResResource;

						
	Gdiplus::Bitmap* pBitmap = NULL;

	if((hResInstance = GetModuleHandle(NULL)))
	{
		if( (hResLocation = FindResource(hResInstance, "otherItems", "RT_RCDATA")) )
		{
			if( (hResResource = LoadResource(hResInstance, hResLocation)) )
			{
				LPVOID  lpRes      = LockResource(hResResource);
				DWORD   nBufSize   = SizeofResource(hResInstance, hResLocation);
				HGLOBAL pResBuffer = GlobalAlloc(GMEM_MOVEABLE, nBufSize);
 
				if( lpRes && nBufSize && pResBuffer )
				{
					void* pBuffer = GlobalLock(pResBuffer);
    
					if( pBuffer )
					{
						CopyMemory(pBuffer, lpRes, nBufSize);
						IStream* pIStream = NULL;
        
						if( CreateStreamOnHGlobal(pResBuffer, FALSE, &pIStream) == S_OK )
						{
							pBitmap = Gdiplus::Bitmap::FromStream(pIStream);
							pIStream->Release();
						}
        
						GlobalUnlock(pBuffer);
					}
        
					GlobalFree(pResBuffer);
					UnlockResource(hResResource);  
				}
			}
		}
	}
 
	// Löschen, wenn das Bitmap nicht mehr gebraucht wird
 
	if( pBitmap )
	{
		delete pBitmap;
	}



}

resource.h
Code:
#define otherItems		10003

resource.rc
Code:
otherItems RT_RCDATA DISCARDABLE "data\\otherItems.png"
 
Hallo,

du solltest mal mit dem Debugger durchsteppen, welche Funktionsaufrufe fehlschlagen und ggf. mit GetLastError() die Fehlercodes abholen.

Gruß
MCoder
 
Zurück