private
{ Private declarations }
dds:IDirectDraw;
fsf:IDirectDrawsurface;
bsf:IDirectDrawSurface;
bmp:tbitmap;
........................
........................
请看下断代码,为何我用dds.SetCooperativeLevel(handle,(DDSCL_NORMAL);却不能创建表面////////设置各项参数//////////
if dds.SetCooperativeLevel(handle,{DDSCL_NORMAL}DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN or DDSCL_ALLOWMODEX)<>DD_OK then
begin
showmessage('SetCooperativeLevel 失败!!');
exit;
end;
{if dds.SetDisplayMode(800,600,16)<>DD_OK then
begin
showmessage('SetDisplayMode 失败!!');
exit;
end; }
////////////////////////////// ////////创建表面///////////////
zeromemory(@a,sizeof(a));
a.dwSize:=sizeof(a);
a.dwFlags:=DDSD_CAPS or DDSD_BACKBUFFERCOUNT;
a.ddsCaps.dwCaps:=DDSCAPS_PRIMARYSURFACE or DDSCAPS_COMPLEX or DDSCAPS_FLIP or DDSCAPS_VIDEOMEMORY;
a.dwBackBufferCount:=1;
if dds.CreateSurface(a,fsf,nil)<>DD_OK then
begin
a.ddsCaps.dwCaps:=DDSCAPS_COMPLEX or DDSCAPS_FLIP or DDSCAPS_PRIMARYSURFACE;
if dds.CreateSurface(a,fsf,nil)<>DD_OK then
showmessage('surface 创建失败!');
exit;
end;下一段释放时总出错,请问是怎么回事
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bmp.Free;
if bsf<>nil then
begin
bsf._Release;
bsf:=nil;
end;
{if fsf<>nil then
begin
fsf._Release;
fsf:=nil;
end;}
if dds<>nil then
begin
dds._Release;
dds:=nil;
end;
{ Private declarations }
dds:IDirectDraw;
fsf:IDirectDrawsurface;
bsf:IDirectDrawSurface;
bmp:tbitmap;
........................
........................
请看下断代码,为何我用dds.SetCooperativeLevel(handle,(DDSCL_NORMAL);却不能创建表面////////设置各项参数//////////
if dds.SetCooperativeLevel(handle,{DDSCL_NORMAL}DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN or DDSCL_ALLOWMODEX)<>DD_OK then
begin
showmessage('SetCooperativeLevel 失败!!');
exit;
end;
{if dds.SetDisplayMode(800,600,16)<>DD_OK then
begin
showmessage('SetDisplayMode 失败!!');
exit;
end; }
////////////////////////////// ////////创建表面///////////////
zeromemory(@a,sizeof(a));
a.dwSize:=sizeof(a);
a.dwFlags:=DDSD_CAPS or DDSD_BACKBUFFERCOUNT;
a.ddsCaps.dwCaps:=DDSCAPS_PRIMARYSURFACE or DDSCAPS_COMPLEX or DDSCAPS_FLIP or DDSCAPS_VIDEOMEMORY;
a.dwBackBufferCount:=1;
if dds.CreateSurface(a,fsf,nil)<>DD_OK then
begin
a.ddsCaps.dwCaps:=DDSCAPS_COMPLEX or DDSCAPS_FLIP or DDSCAPS_PRIMARYSURFACE;
if dds.CreateSurface(a,fsf,nil)<>DD_OK then
showmessage('surface 创建失败!');
exit;
end;下一段释放时总出错,请问是怎么回事
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bmp.Free;
if bsf<>nil then
begin
bsf._Release;
bsf:=nil;
end;
{if fsf<>nil then
begin
fsf._Release;
fsf:=nil;
end;}
if dds<>nil then
begin
dds._Release;
dds:=nil;
end;
dds:IDirectDraw;
dd7 : IDirectDraw7;
fsf:IDirectDrawsurface7;
bsf:IDirectDrawSurface7;
生成用:
dd7.SetCooperativeLevel...
....
dd7.CreateSurface...
我使用DelphiX的,比较简单
不需要DX8/9的功能就是选DelphiX
指明版本也不行,只要用DDSCL_NORMAL旗标,还是无法创建surface