Memuat Karakter dan Data Animasi

[Microsoft Agent tidak digunakan lagi pada Windows 7, dan mungkin tidak tersedia dalam versi Windows berikutnya.]

Setelah Anda memiliki penunjuk ke antarmuka IAgentEx , Anda dapat menggunakan metode Load untuk memuat karakter dan mengambil antarmuka IAgentCharacterEx-nya . Ada tiga kemungkinan berbeda untuk jalur Beban karakter. Yang pertama kompatibel dengan Microsoft Agent 1.5 di mana jalur yang ditentukan adalah jalur lengkap dan nama file file dari file karakter. Kemungkinan kedua adalah menentukan nama file saja, dalam hal ini, Agen melihat direktori Chars-nya. Kemungkinan terakhir adalah menyediakan parameter Varian kosong yang menyebabkan karakter default dimuat.

   // 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);

Anda dapat menggunakan antarmuka ini untuk mengakses metode karakter:

   // 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);

Saat Anda tidak lagi memerlukan layanan Agen Microsoft, seperti saat aplikasi klien Anda dimatikan, lepaskan antarmukanya. Perhatikan bahwa melepaskan antarmuka karakter tidak membongkar karakter. Panggil metode Unload untuk melakukan ini sebelum merilis antarmuka 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);