IDirectDrawSurface7 :: Blt вернул E_INVALIDARG

Шаг 1:

                Image* image = NULL;
image = Bitmap::FromFile(m_lpwFPSImagePath[i], TRUE);

DDSURFACEDESC2    ddsd;
DDCOLORKEY          ddck;
ZeroMemory( &ddsd, sizeof( ddsd ) );
ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY;
ddsd.dwWidth  = image->GetWidth();;
ddsd.dwHeight = image->GetHeight();
hr = m_pDevice->CreateSurface(&ddsd, &m_pFPSTexture, NULL );
if( hr != DD_OK )
{
if(hr == DDERR_OUTOFVIDEOMEMORY)
{
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN |
DDSCAPS_SYSTEMMEMORY;
hr = m_pDevice->CreateSurface(&ddsd, &m_pFPSTexture, NULL );
}
}

Шаг 2:

RECT SrcRect = {0,0, fTexWidth, fTexHeight};
RECT DstRect = {0,0,60,20};

    hr = m_pPrimarySurf->Blt(&DstRect,
m_pFPSTexture,&SrcRect,DDBLT_WAIT,NULL);

Замечания:
Размер изображения: 3170 x 64

m_pPrimarySurf-> Blt (…) вернул E_INVALIDARG. Так почему же?
Спасибо !

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]