Microsoft DirectX 8.0 (C++) |
Microsoft® 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::GetAdapterIdentifier メソッドを呼び出している。pD3D は、IDirect3D8 インターフェイスへのポインタである。
hr = IDirect3D8_GetAdapterIdentifier(pD3D, Adapter, dwFlags, pIdentifier);