文字データとアニメーション データの読み込み
[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);