Microsoft DirectX 8.0 (Visual Basic) |
IUnknown インターフェイスは、すべての COM オブジェクトにより公開される。C++ 開発者はこのインターフェイスを使用して、オブジェクトの機能にアクセスしたりオブジェクトの有効期間を管理できる。Microsoft® Visual Basic® 開発者は、ほとんど IUnknown を利用する必要はない。ただし、Visual Basic では、オブジェクトの IUnknown インターフェイスは IUnknown データ型で表される。
Microsoft DirectX® 8.0 のいくつかの Visual Basic メソッドは、Unknown と宣言された戻り値またはパラメータを備えている。これらの値の型は定義されておらず、IUnknown 型または別のオブジェクト型になる。DirectX 8.0 では、次の 2 つの場合に Unknown 宣言が使用される。
注 Unknown 宣言は Any 宣言に似ている。パラメータまたは戻り値が Any と宣言されている場合、任意のデータ型を渡したり設定できる。同様に、パラメータまたは戻り値が Unknown と宣言されている場合、任意のオブジェクト型を渡したり設定できる。ただし、注意して正しいオブジェクト型を使用しないと、予期しない結果が生じることがある。
変数 IUnknown を使用する場合、オブジェクトのメソッドまたは C++ で使用される QueryInterface、Addref、および Release の各メソッドには直接アクセスできない。変数 IUnknown にオブジェクト参照がある場合、そのオブジェクトのメソッドを使用するには、その変数を適切に宣言されたクラス変数に設定する必要がある。
次のサンプル コードは、IUnknown データ型を使用する方法を示している。
'dmSeg は DirectMusicSegment8 オブジェクトである。 'dmPerf は DirectMusicPerformance8 オブジェクトである。 Dim config as IUnknown Dim audioPath As DirectMusicAudioPath Set config = dmSeg.GetAudioPathConfig Set audioPath = dmPerf.CreateAudioPath(config)
DirectMusicSegment8.GetAudioPathConfig が返す値は、クラスでは表されない構成オブジェクトへの参照である。次に、このオブジェクト参照をほかのメソッド (この場合、DirectMusicPerformance8.CreateAudioPath) に渡す。
次に示す IUnknown データ型の使用方法は間違っている。
'objDiDev は DirectInputDevice8 オブジェクトである。 Dim unk As IUnknown Set unk = objDiDev NumItems = unk.GetDeviceData(diDeviceData,0) 'Incorrect!
DirectInputDevice8.GetDeviceData メソッドを呼び出そうとすると、"method not found" エラーが発生する。