|
|

楼主 |
发表于 2005-4-24 11:07:00
|
显示全部楼层
Re:求助:ddraw的定义放在该类里为什么连接不上缓冲区?
对了,附上程序:
定义:
HDC hdc,hdc1;
HBITMAP bitmap;
LPDIRECTDRAWSURFACE7 pPSur; //定义主绘图页
LPDIRECTDRAWSURFACE7 pBBuf; //定义后缓冲区
LPDIRECTDRAWSURFACE7 pOPWo[7];//陈真的暂存图面
LPDIRECTDRAWSURFACE7 pOPYb[7];//日本的暂存图面//定义颜色键
LPDIRECTDRAWSURFACE7 DXSBack1; //主缓存页面1
LPDIRECTDRAWSURFACE7 DXSBack0; //背景地图缓存页面0
LPDIRECTDRAWSURFACE7 DXSBack; //地图移动缓存页面0
LPDIRECTDRAW7 pDD7; //定义DirectDraw对象
DDSCAPS2 caps; //定义DDSCAPS结构
DDSURFACEDESC2 desc; //定义描述结构
HRESULT result; //定义HRESULT类型变量
DDCOLORKEY key;
程序:
result = DirectDrawCreateEx(NULL, (VOID**)&pDD7, IID_IDirectDraw7, NULL);
//建立DirectDraw对象
if (result != DD_OK)
MessageBox("建立DirectDraw对象失败!");
result = pDD7->SetCooperativeLevel(m_hWnd,DDSCL_EXCLUSIVE |
DDSCL_FULLSCREEN|DDSCL_ALLOWREBOOT);
//设定协调等级
if(result !=DD_OK)
MessageBox("设定程序协调等级失败!");
result = pDD7->SetDisplayMode(640,480,16,0,DDSDM_STANDARDVGAMODE); //设定显示模式
if(result !=DD_OK)
MessageBox("设定屏幕显示模式失败!");
//==============================================================================
memset(&desc,0,sizeof(desc));
desc.dwSize = sizeof(desc);
desc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
desc.dwBackBufferCount = 1;
desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
result = pDD7->CreateSurface(&desc,&pPSur,NULL);
//建立主绘图页
if(result != DD_OK)
MessageBox("建立主绘图页失败!");
caps.dwCaps = DDSCAPS_BACKBUFFER;
result = pPSur->GetAttachedSurface(&caps,&pBBuf);
//连结后缓冲区
if(result !=DD_OK)
MessageBox("连接后缓冲区失败!"); |
|