如何保留更改?

时间:2013-03-12 18:21:08

标签: c++ class function pointers direct2d

我有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。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

如您所知,LoadBitmapFromFile函数失败 所以你应该检查LoadBitmapFromFile函数的参数

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

此外,如果MainScreen的Show函数调用每个帧,则效率不高 因为您不必每帧加载位图。
并且应该发布d2d位图。