Microsoft DirectX 8.0 (C++)

PDVMESSAGEHANDLER

PDVMESSAGEHANDLER はアプリケーションにより定義されたコールバック関数であり、IDirectPlayVoiceClient インターフェイスおよび IDirectPlayVoiceServer インターフェイスでユーザーにメッセージを送信するときに使用される。

typedef HRESULT (FAR PASCAL *PDVMESSAGEHANDLER)( 
  LPVOID pvUserContext,
  DWORD dwMessageType,
  LPVOID lpMessage
);

パラメータ

pvUserContext
このコールバック関数に渡されるアプリケーション定義構造体へのポインタ。IDirectPlayVoiceServer::Initialize メソッドおよび IDirectPlayVoiceClient::Initialize メソッドの lpUserContext パラメータで定義される。
dwMessageType
次のメッセージ タイプのいずれか 1 つ。
DVMSGID_CONNECTRESULT
DVMSGID_CREATEVOICEPLAYER
DVMSGID_DELETEVOICEPLAYER
DVMSGID_DISCONNECTRESULT
DVMSGID_GAINFOCUS
DVMSGID_HOSTMIGRATED
DVMSGID_INPUTLEVEL
DVMSGID_LOCALHOSTSETUP
DVMSGID_LOSTFOCUS
DVMSGID_OUTPUTLEVEL
DVMSGID_PLAYEROUTPUTLEVEL
DVMSGID_PLAYERVOICESTART
DVMSGID_PLAYERVOICESTOP
DVMSGID_RECORDSTART
DVMSGID_RECORDSTOP
DVMSGID_SESSIONLOST
DVMSGID_SETTARGETS
lpMessage
メッセージ情報を保持する構造体。

戻り値

適切な戻り値については、各メッセージのドキュメントを参照すること。ドキュメントに記述がない場合、この関数は S_OK を返す。

注意

このコールバック関数を実装する場合は、最初に dwMessageType パラメータに返されるメッセージ タイプを調べ、次にメッセージ構造体 (lpMessage) をそのタイプに設定してメッセージ情報を取得する必要がある。メッセージの中には、パラメータがないため、定義された構造体を持たないものもある。このようなメッセージの場合、lpMessage パラメータは NULL にする。

 :  この関数は、複数の異なるスレッドから同時に呼び出される可能性がある。このため、スレッドセーフかつ再入可能でなければならない。

すべてのメッセージ構造体の名前は対応するメッセージ タイプ名と同じだが、接頭辞は DVMSGID_ の代わりに DVMSG_ になる。たとえば、DVMSGID_RECORDSTART の構造体は DVMSG_RECORDSTART である。

メッセージ ハンドラに送信される構造体は、呼び出し処理中のみ有効である。したがって、関数に渡された情報をハンドラ関数が戻った後に使用する場合は、データをコピーする必要がある。

同じプレーヤーからのコールバック メッセージは、順番に並べられる。プレーヤーからメッセージを受け取ると、そのメッセージを処理し、コールバック関数が戻されるまで別のメッセージを受け取ることはない。

IDirectPlayVoiceClient::InitializeIDirectPlayVoiceServer::InitializeIDirectPlayVoiceClient::SetNotifyMask、および IDirectPlayVoiceServer::SetNotifyMask の各メソッドの呼び出しによりメッセージ マスクに指定されたメッセージのみがこのコールバック関数に送信される。

DVMSGID_GAINFOCUS メッセージ構造体および DVMSGID_LOSTFOCUS メッセージ構造体は、Microsoft® DirectPlay® のこのリリースには実装されていない。

動作環境

  Windows NT/2000 : Windows 2000 以降に対する再配布可能ファイルとして提供。
  Windows 95/98 : Windows 95 以降に対する再配布可能ファイルとして提供。
  ヘッダー : Dvoice.h で宣言。