Im using Visual Studio 2012 using Visual C++, I have been trying to load a bitmap from my resources Like this:
HRESULT DemoApp::CreateDIBFromResource(HWND hWnd, HINSTANCE Instance, LPCWSTR ImageID)
{
HRESULT hr = S_OK;
HBITMAP bitmap = (HBITMAP)LoadBitmap(GetModuleHandle(0), MAKEINTRESOURCE(ImageID));
return hr;
}
and calling the function like this
if(SUCCEEDED(CreateDIBFromResource(hWnd, NULL, MAKEINTRESOURCE(IDB_BACKGROUND))))
{
InvalidateRect(hWnd, NULL, TRUE);
}
It wasn't loading anything so I put a breakpoint at
return hr;
when I hover the cursor over ImageID it says
ImageID = 0x00000065 Error reading characters of string.
I cant figure out the problem. I have Unicode enabled and I don't know if that has anything to do with it.
MAKEINTRESOURCE is a macro that transforms a integer to a string. You use it correctly when you call CreateDIBFromResource, but then you apply it again on the result, which makes no sense. You should use the ImageID parameter directly. The same applies to the Instance parameter.
HRESULT DemoApp::CreateDIBFromResource(HWND hWnd, HINSTANCE Instance, LPCWSTR ImageID)
{
HRESULT hr = S_OK;
HBITMAP bitmap = (HBITMAP)LoadBitmap(Instance, ImageID);
return hr;
}
BTW, what's the point of returning a HRESULT? Shouldn't you return the HBITMAP?
User contributions licensed under CC BY-SA 3.0