次の方法で共有


文字データとアニメーション データの読み込み

[Microsoft エージェントは Windows 7 の時点で非推奨となり、以降のバージョンの Windows では使用できない場合があります。]

IAgentEx インターフェイスへのポインターを取得したら、Load メソッドを使用して文字を読み込み、その IAgentCharacterEx インターフェイスを取得できます。 文字の読み込みパスには、3 つの異なる可能性があります。 1 つ目は Microsoft Agent 1.5 と互換性があり、指定されたパスは文字ファイルの完全なパスとファイル名です。 2 つ目の可能性は、ファイル名のみを指定することです。その場合、エージェントはその Chars ディレクトリを検索します。 最後の可能性は、既定の文字が読み込まれる原因となる空の Variant パラメーターを指定することです。

   // Create a variant to store the filename of the character to load

   const LPWSTR kpwszCharacter = L"merlin.acs";

   VariantInit(&vPath);

   vPath.vt = VT_BSTR;
   vPath.bstrVal = SysAllocString(kpwszCharacter);

   // Load the character

   hRes = pAgentEx->Load(vPath, &lCharID, &lRequestID);

   // Get its IAgentCharacterEx interface

   hRes = pAgentEx->GetCharacterEx(lCharID, &pCharacterEx);

このインターフェイスを使用して、文字のメソッドにアクセスできます。

   // Show the character.  The first parameter tells Microsoft
   // Agent to show the character by playing an animation.

   hRes = pCharacterEx->Show(FALSE, &lRequestID);

   // Make the character speak

   bszSpeak = SysAllocString(L"Hello World!");

   hRes = pCharacterEx->Speak(bszSpeak, NULL, &lRequestID);

   SysFreeString(bszSpeak);

クライアント アプリケーションのシャットダウン時など、Microsoft エージェント サービスが不要になった場合は、そのインターフェイスを解放します。 文字インターフェイスを解放しても、文字はアンロードされないことに注意してください。 IAgentEx インターフェイスを解放する前に、Unload メソッドを呼び出してこれを行います。

// Clean up

if (pCharacterEx) {

   // Release the character interface

   pCharacterEx->Release();

   // Unload the character.  NOTE:  releasing the character
   // interface does NOT make the character go away.  You must
   // call Unload.

   pAgentEx->Unload(lCharID);
}
   
// Release the Agent

pAgentEx->Release();

VariantClear(&vPath);