Загрузка символьных и анимаций данных
[Агент Майкрософт не рекомендуется использовать в Windows 7 и может быть недоступен в последующих версиях Windows.]
Получив указатель на интерфейс IAgentEx , можно использовать метод Load для загрузки символа и получения его интерфейса IAgentCharacterEx . Существует три различных варианта пути загрузки символа. Первый вариант совместим с Microsoft Agent 1.5, где указанный путь — это полный путь и имя файла символьного файла. Вторая возможность — указать только имя файла. В этом случае агент выполняет поиск в каталоге 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 Agent больше не нужны, например при завершении работы клиентского приложения, отпустите его интерфейсы. Обратите внимание, что освобождение символьного интерфейса не приводит к выгрузке символа. Вызовите метод Unload , чтобы сделать это перед освобождением интерфейса IAgentEx :
// 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);