使用FDirectdraw.CreateSurface创建主表面,为什么总是抛出异常 ?(100分)

  • 主题发起人 主题发起人 crodling
  • 开始时间 开始时间
C

crodling

Unregistered / Unconfirmed
GUEST, unregistred user!
……
SurfaceDesc.dwSze=sizeof(SurfaceDesc)
SurfaceDesc.dwFlags=DDSD_CAPS or DDSD_BACKBUFFERCOUNT;
SurfaceDesc.ddscaps.dwcaps=DDSCAPS_PRIMARYSURFACE or DDSCAPS_FLIP OR DDSCAPS_COMPLEX
SurfaceDesc.dwBackBUfferCount=1;
hr=FDirectdraw.createSurface(SurfaceDesc,FPrimarySurface,nil);
//程序执行到这里就抛出异常,"……Access voliation ……"
……
请问是什么缘故啊?
 
请帮忙看看啊
 
...
SurfaceDesc.dwSize := SizeOf(SurfaceDesc);
SurfaceDesc.dwFlags := DDSD_CAPS or DDSD_BACKBUFFERCOUNT;
SurfaceDesc.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE or DDSCAPS_FLIP or DDSCAPS_COMPLEX;
SurfaceDesc.dwBackBufferCount := 1;
hr := FDirectDraw.CreateSurface(SurfaceDesc, FPrimarySurface, nil);
if (hr = DD_OK) then

begin

...
//代码试肯定没有问题的! 这是DEMO程序!
 
LPDIRECTDRAWSURFACE lpDDSPrimary;
// 主页面
DDSURFACEDESC ddsd;
HRESULT ddrval;

//创建DirectDraw对象
ddrval = DirectDrawCreate( NULL, &lpDD, NULL );
if( ddrval != DD_OK )
return FALSE;

ddrval = lpDD->SetCooperativeLevel(NULL, DDSCL_NORMAL);
if( ddrval != DD_OK )
return FALSE;

ddsd.dwSize = sizeof( ddsd );
ddsd.dwFlags = DDSD_CAPS
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;

ddrval = lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL );
if( ddrval != DD_OK )
return FALSE;

delphi的例子:
http://kuga.51.net
 
多人接受答案了。
 
后退
顶部