2013-03-12 60 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位圖。

相關問題