procedure TForm1.Button1Click(Sender: TObject);
var
lpDD: IDirectDraw;
ddrval:HRESULT;
surface:TDDSurfaceDesc;
lpDDSurface: IDirectDrawSurface;
begin
ddrval:=DirectDrawCreate(nil,lpdd,nil);
if (ddrval = DD_OK) then
begin showmessage('OK!');
lpDD.SetCooperativeLevel(panel1.Handle,DDSCL_NORMAL);
surface.dwSize:=sizeof(surface);
surface.dwFlags := DDSD_CAPS and DDSD_BACKBUFFERCOUNT;
surface.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE and DDSCAPS_FLIP and DDSCAPS_COMPLEX;
surface.dwBackBufferCount := 1;
ddrval:=lpdd.CreateSurface(surface,lpDDSurFace,nil);
if (ddrval = DD_OK) then
begin
showmessage('OK!');
end;
end;
end;-----------------
ddrval:=lpdd.CreateSurface(surface,lpDDSurFace,nil);这里,ddrval得不到DD_OK的结果,Why?
var
lpDD: IDirectDraw;
ddrval:HRESULT;
surface:TDDSurfaceDesc;
lpDDSurface: IDirectDrawSurface;
begin
ddrval:=DirectDrawCreate(nil,lpdd,nil);
if (ddrval = DD_OK) then
begin showmessage('OK!');
lpDD.SetCooperativeLevel(panel1.Handle,DDSCL_NORMAL);
surface.dwSize:=sizeof(surface);
surface.dwFlags := DDSD_CAPS and DDSD_BACKBUFFERCOUNT;
surface.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE and DDSCAPS_FLIP and DDSCAPS_COMPLEX;
surface.dwBackBufferCount := 1;
ddrval:=lpdd.CreateSurface(surface,lpDDSurFace,nil);
if (ddrval = DD_OK) then
begin
showmessage('OK!');
end;
end;
end;-----------------
ddrval:=lpdd.CreateSurface(surface,lpDDSurFace,nil);这里,ddrval得不到DD_OK的结果,Why?
surface.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE and DDSCAPS_FLIP and DDSCAPS_COMPLEX;这2个参数设置错误。
surface.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE or DDSCAPS_FLIP or DDSCAPS_COMPLEX;and 要改成 or