那为大哥帮我看看我在设定DirectDraw主页面时出错了!代码如下
function TForm1.Draw:integer;
var
lpDD: IDirectDraw7;
page: IDirectDrawSurface7 ;
ddsd:TDDSurfaceDesc2 ;
begin
Result := 0;
if DirectDrawCreateEx(nil, lpDD, IID_IDIRECTDRAW7, nil) <> DD_OK then
begin
showmessage('初始化DX出错!');
exit;
end;
if lpDD.SetCooperativeLevel(self.Handle ,DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN) <> DD_OK then
begin
showmessage('设定DirectDraw的控制级出错!');
exit;
end;
if lpDD.SetDisplayMode(640, 480, 32, 0, DDSDM_STANDARDVGAMODE) <> DD_OK then
begin
showmessage('设定DirectDraw显示对象出错!');
exit;
end;
ddsd.dwSize :=sizeof(ddsd);
ddsd.dwFlags :=DDSD_CAPS;
ddsd.ddsCaps.dwCaps :=DDSCAPS_PRIMARYSURFACE;
if lpDD.CreateSurface(ddsd,page,nil)<>DD_Ok then
begin
showmessage('设定DirectDraw主页面出错!');
exit;
end;
end ;
function TForm1.Draw:integer;
var
lpDD: IDirectDraw7;
page: IDirectDrawSurface7 ;
ddsd:TDDSurfaceDesc2 ;
begin
Result := 0;
if DirectDrawCreateEx(nil, lpDD, IID_IDIRECTDRAW7, nil) <> DD_OK then
begin
showmessage('初始化DX出错!');
exit;
end;
if lpDD.SetCooperativeLevel(self.Handle ,DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN) <> DD_OK then
begin
showmessage('设定DirectDraw的控制级出错!');
exit;
end;
if lpDD.SetDisplayMode(640, 480, 32, 0, DDSDM_STANDARDVGAMODE) <> DD_OK then
begin
showmessage('设定DirectDraw显示对象出错!');
exit;
end;
ddsd.dwSize :=sizeof(ddsd);
ddsd.dwFlags :=DDSD_CAPS;
ddsd.ddsCaps.dwCaps :=DDSCAPS_PRIMARYSURFACE;
if lpDD.CreateSurface(ddsd,page,nil)<>DD_Ok then
begin
showmessage('设定DirectDraw主页面出错!');
exit;
end;
end ;
这里的lpDD是个指针,要加上^,还有后面的也要做类似的修改
你是不是用的jedi的Direct7 header包?
其他的接口也有类似的问题,倒是不影响使用拉,不过到现在还是不知道为什么会这样