游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1391|回复: 0

关于DirectDraw编程的求助!!!!

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-2-14 10:52:00 | 显示全部楼层 |阅读模式
在创建双缓冲界面时,在取缓冲页面的指针时失败,HRESULT的值指明错误为”Requested item was not found.“。部分原代码如下:
                LPDIRECTDRAW7  lpDD=NULL;
                LPDIRECTDRAWSURFACE7 lpDDSPrimary=NULL;
                LPDIRECTDRAWSURFACE7 lpDDSBack=NULL;
               
                drval=DirectDrawCreateEx(NULL,(LPVOID*)&lpDD,IID_IDirectDraw7,NULL);
        if(FAILED(ddrval))
        {
                ErrStr=Err_DirectDrawCreate;
                return FALSE;
        }

        //SET COOPERATIVE LEVEL

        ddrval = lpDD->SetCooperativeLevel(hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
        if(FAILED(ddrval))
        {
                ErrStr=Err_Coop;
                return FALSE;
        }

        //SET THE DISPLAY MODE
        ddrval = lpDD->SetDisplayMode(800,600,16,0,0);
        if(FAILED(ddrval))
        {
                ErrStr="SET DISPLAYMODE ERROR";
                return FALSE;
        }
                DDSURFACEDESC2 ddsd;
        DDSCAPS2 ddscaps;
        ZeroMemory(&ddsd,sizeof(ddsd));
        ddsd.dwSize = sizeof(ddsd);
        ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
        ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
        ddsd.dwBackBufferCount = 1;
        ddrval=lpDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
        if(FAILED(ddrval))
        {
                ErrStr=Err_CreateSurf;
                return FALSE;
        }

        //Fetch back buffer interface

        ddscaps.dwCaps=DDSCAPS_BACKBUFFER;
        ddrval=lpDDSPrimary->GetAttachedSurface(&ddscaps,&lpDDSBack);
        if(FAILED(ddrval))
        {
                ErrStr="create backsurface false";
                return FALSE;
        }



谢谢各位高手能指教一二
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 06:40

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表