我有MainScreen.cpp
void MainScreen::Show(D2DResources* pD2DResources)
{
HRESULT hr = S_OK;
ID2D1Bitmap* pBitmap=pD2DResources->GetpCurrentScreen();
hr = pD2DResources->LoadBitmapFromFile(
pD2DResources->GetpRT(),
pD2DResources->GetpIWICIF(),
L".\\Images\\MainScreen.jpg",
0,
0,
&pBitmap
);
if(SUCCEEDED(hr))pD2DResources->DrawScreen();
}
在某些时候,MainScreen :: Show()函数就像这样调用
MainScreen->Show(&d2DResources);
然而,似乎pD2DResources在MainScreen :: Show()函数中调用DrawScreen(),存储到& pBitmap中的任何东西都没有保存。实际上,我得到一个未处理的异常,当它发生时,应该已经收到pBitmap值的pCurrentScreen是0x00000000。
我该怎么办?
答案 0 :(得分:0)
如您所知,LoadBitmapFromFile函数失败
所以你应该检查LoadBitmapFromFile函数的参数
但是,为什么要将pD2DResources-> GetpCurrentScreen()分配给pBitmap?
在下一行,将再次为pBitmap分配LoadBitmapFromFile函数。
此外,如果MainScreen的Show函数调用每个帧,则效率不高
因为您不必每帧加载位图。
并且应该发布d2d位图。