DirectDraw 对象如何释放?(300)

  • 主题发起人 张辉明
  • 开始时间

张辉明

Unregistered / Unconfirmed
GUEST, unregistred user!
Dspack ,http://www.clootie.ru/delphi/download_dx92.html#Headers等DX组件包中,都有DXdraw接口头文件单元,但是我发现这些单元中没有 对象释放接口声明,第二个包中,连DEMO中也没有释放代码,只有创建,没有释放,(DEMO中释放只是pointer := nil)但是网上很多DDRAW的代码都有释放代码,微软SDK中也说要释放。见:http://support.microsoft.com/kb/139097/zh-cn这两头包中的IDirectDraw 接口中都没有声明 Release() ;于是我自己帮它声明,例如 页面 接口 IDirectDrawSurface7 中function Release(); HResult; stdcall;但是一调用就报地址错误了。谁能给我讲讲DDRAW中对象释放问题,还有一个问题,没懂明白用窗口模式创建DDRAW对象FDisplay.CreateWindowedDisplay( panel1.Handle, 640, 480_HEIGHT );可以成功但是FDisplay.CreateFullScreenDisplay( panel1.Handle, 640, 480_HEIGHT );确总是失败,我想要到用DX,panel1的 DC的内容,可以全屏实显。而且可以还原。多谢!
 
com组件,=nil后会在适当时候自动释放。
 
我的理解是 com对象应该在引用计数为0时才会真正释放。继续等待
 
兰州的理解是没错的。确实引用为零的时候系统自动释放。你在初始化com对象时注意调用一下coinitialize,用完了除了要设置为nil(这样只能保证delphi的内存管理不对这个感兴趣,DELPHI并不是JVM,不能根据你的代码自动释放内存)之外切记还要调用couninitialize。
 
顶部