ターミナルを選択する
次のコード例では、呼び出しに関連付けられているストリームにターミナルを選択する方法を示します。
このコード例を使用する前に、「 TAPI の初期化 」および「 アドレスの選択」で操作を実行する必要があります。
また、この例では、アプリケーションが着信または発信呼び出しの ITBasicCallControl インターフェイスへのポインターを既に持っている必要があります。 このポインターを取得する方法のコード例については、「 呼び出 しを行う」または「 呼び出しを受信 する」を参照してください。
注意
この例には、実稼働コードに適したエラー チェックとリリースはありません。
// pAddress is an ITAddress interface pointer.
// pBasicCall is an ITBasicCallControl interface pointer.
// Get the ITStreamControl interface.
ITStreamControl * pStreamControl;
HRESULT hr = pBasicCall->QueryInterface(
IID_ITStreamControl,
(void **) &pStreamControl
);
// If ( hr != S_OK ) process the error here.
// Enumerate the streams and select
// terminals onto them.
IEnumStream * pEnumStreams;
ITStream * pStream;
hr = pStreamControl->EnumerateStreams(&pEnumStreams);
// If ( hr != S_OK ) process the error here.
while ( S_OK == pEnumStreams->Next(1, &pStream, NULL) )
{
// Get the media type and direction of this stream.
long lMediaType;
TERMINAL_DIRECTION dir;
hr = pStream->get_MediaType( &lMediaType );
// If ( hr != S_OK ) process the error here.
hr = pStream->get_Direction( &dir );
// If ( hr != S_OK ) process the error here.
// Create the default terminal for this media type and direction.
// If lMediaType == TAPIMEDIATYPE_VIDEO and
// dir == TD_RENDER, a dynamic video render terminal
// is required. Please see Incoming.cpp in
// the samples section of the SDK.
// For all other terminals, get the default static terminal.
ITTerminal * pTerminal;
ITTerminalSupport * pTerminalSupport;
hr = pAddress->QueryInterface(
IID_ITTerminalSupport,
(void **)&pTerminalSupport
);
// If ( hr != S_OK ) process the error here.
hr = pTerminalSupport->GetDefaultStaticTerminal(
lMediaType,
dir,
pTerminal
);
// If ( hr != S_OK ) process the error here.
// Select the terminal on the stream.
hr = pStream->SelectTerminal(pTerminal);
// If ( hr != S_OK ) process the error here.
}
関連トピック