Проблема такая.Есть функция загрузки изображения
| Код | IDirectDrawSurface7 *LoadBMPToSurface(LPCTSTR filename , IDirectDraw7 *ppiDD) { IDirectDrawSurface7 *surf; HANDLE hBmp; BITMAP bm;
//загрузка картинки из файла hBmp = LoadImage(0 , filename , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION); if(hBmp == 0) return 0; GetObject(hBmp , sizeof(bm) , &bm); DDSURFACEDESC2 desc; ZeroMemory(&desc , sizeof(desc)); desc.dwSize = sizeof(desc); desc.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS; desc.dwWidth = bm.bmWidth; desc.dwHeight = bm.bmHeight; desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
//создание поверхности HRESULT r = ppiDD->CreateSurface(&desc , &surf , 0); if(r != DD_OK) return 0;
//картинку на поверхность HDC hdcImage; hdcImage = CreateCompatibleDC(0); if(hdcImage == 0) return 0; SelectObject(hdcImage , hBmp);
HDC hdc; surf->GetDC(&hdc); StretchBlt(hdc , 0 , 0 , bm.bmWidth , bm.bmHeight , hdcImage , 0 , 0 , bm.bmWidth , bm.bmHeight , SRCCOPY); surf->ReleaseDC(hdc);
DeleteDC(hdcImage); DeleteObject(hBmp); return surf; }
|
Я ее перепроверил,даже брал с готового,рабочего примера,они одинаковые.И есть код отображения
| Код |
case WM_PAINT: hdc = BeginPaint(hWnd , &ps); BOOL Windowed = FALSE; if((imagesurf != NULL) && (!Windowed)) { MessageBox(hWnd , "Изображение успешно загружено" , "ОК" , MB_OK); RECT dst; dst.top = 0; dst.left = 0; dst.right = iWidth; dst.bottom = iHeight;
DDBLTFX bltfx; ZeroMemory(&bltfx , sizeof(bltfx)); bltfx.dwSize = sizeof(bltfx);
backsurf->BltFast(0 , 0 , imagesurf , NULL , DDBLTFAST_WAIT); primsurf->Flip(NULL , DDFLIP_WAIT); } else MessageBox(hWnd , "Не удалось загрузить изображение!" , "Ошибка" , MB_OK|MB_ICONERROR);
EndPaint(hWnd , &ps); break;
|
Ошибка находится в переменной imagesurf,видимо она остается пустой.Но есть код
| Код | if(DXDDInit(&ppiDD , &primsurf , &backsurf , hWnd , iWidth , iHeight , 16, FALSE) != S_OK) { return FALSE; } imagesurf = LoadBMPToSurface("BG.bmp" , ppiDD);
ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); MSG msg;
|
Помогите плиз найти ошибку |