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;