PDVMESSAGEHANDLER プロトタイプ
PDVMESSAGEHANDLER プロトタイプ
PDVMESSAGEHANDLER はアプリケーション定義のコールバック関数であり、IDirectPlayVoiceClient インターフェイスおよび IDirectPlayVoiceServer インターフェイスがユーザーにメッセージを送信するときに使う。
構文
typedef HRESULT (CALLBACK *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::Initialize、IDirectPlayVoiceServer::Initialize、IDirectPlayVoiceClient::SetNotifyMask、IDirectPlayVoiceServer::SetNotifyMask の各メソッドの呼び出しによりメッセージ マスクに指定されたメッセージのみが、このコールバック関数に送信される。
DVMSGID_GAINFOCUS メッセージ構造体および DVMSGID_LOSTFOCUS メッセージ構造体は、Microsoft® DirectPlay® のこのリリースには実装されていない。
プロトタイプ情報
ヘッダー | dvoice.h |
インポート ライブラリ | なし |
最低限のオペレーティング システム | Windows 98、Pocket PC 2002 |