用宏调用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
2005.09.05 译
博客介绍了微软DirectX接口为方法定义宏,以简化应用程序使用。宏分为C和C++版本,使用C++宏需定义__cplusplus。展示了d3d.h头文件中IDirect3D8::GetAdapterIdentifier方法的宏定义,还说明了使用宏的步骤及返回值类型。
1699

被折叠的 条评论
为什么被折叠?



