2013-03-12 61 views
0

我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在调用DrawScreen() MainScreen :: Show()函数,无论存储到& pBitmap没有保存。实际上,我得到一个未处理的异常,并且它发生时,pCurrentScreen(应该已经收到pBitmap的值)是0x00000000。

我该怎么办?

+0

或者是所有代码的小片段的问题? – 2013-03-12 18:40:16

+0

我做了一些改变,现在它工作。 – 2013-03-12 19:30:46

回答

0

如你所知,LoadBitmapFromFile功能失效
所以,你应该检查LoadBitmapFromFile函数的参数

但是你为什么要分配pD2DResources-> GetpCurrentScreen()来pBitmap?
下一行,pBitmap将再次分配LoadBitmapFromFile函数。

此外,如果MainScreen的Show函数调用每个帧,那就没有效率。
因为您不必为每个帧加载位图。
应该释放d2d位图。

相关问题