用宏調用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 譯