У меня есть 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.
Что я должен делать?
Как вы знаете, функция LoadBitmapFromFile не удалась
Поэтому вы должны проверить аргументы функции LoadBitmapFromFile
Однако, почему вы назначили pD2DResources-> GetpCurrentScreen () для pBitmap ??
На следующей строке pBitmap снова будет назначена функция LoadBitmapFromFile.
Кроме того, если функция Show MainScreen вызывает каждый кадр, это неэффективно.
Потому что вам не нужно загружать растровые изображения в каждом кадре.
И растровое изображение d2d должно быть выпущено.
Других решений пока нет …