用宏调用DirectX COM的方法(翻译)

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

用宏调用DirectX COM 的方法

很多微软的DirectX接口为每一种方法定义了一个宏,这样在你的应用程序中使用这些方法会更简单一些。你会发现这些宏定义在接口声明的头文件中。这些宏被设计成在c中的宏和在c++中的宏。如果你想使用在c++中的宏,你必须定义__cplusplus.否则你将使用在c中的宏。宏的语法在两种语言当中是相同的,但是在头文件中它们是分开定义的,以便适当的对呼叫约定进行扩充。

例如:下面的代码段从d3d.h头文件中显示了为IDirect3D8::GetAdapterIdentifier 方法定义的c宏和c++宏。

#if !defined(__cplusplus) || defined(CINTERFACE)

...

#define IDirect3D8_GetAdapterIdentifier(p,a,b,c) (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)

...

#else

...

#define IDirect3D8_GetAdapterIdentifier(p,a,b,c) (p)->GetAdapterIdentifier(a,b,c)

...

#endif

使用这些宏,你首先必须得到相关接口的指针。宏的第一个参数必须设置为这个指针,余下的参数对应着方法中的参数。宏的返回值是一个HRESULT类型的,这个值就是宏所对应的方法的返回值。下面的代码段用了一个宏来呼叫IDirect3D8::GetAdapter(dentifier方法,pD3D是指向IDirect3D8接口的指针。

hr = IDirect3D8_GetAdapterIdentifier(pD3D,

Adapter,

dwFlags,

pIdentifier);

注: 由于翻译水平有限,错误在所难免。如发现翻译的不对的地方还请路上的朋友指正,谢谢

可以任意转载。

译者: closeall

MSN: closeall@hotmail.com

e_mail: closeall@126.com

2005.09.05 译

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航