用過Office97或Office2000的人會知道,Office軟體中有一個可愛的Office助手,能夠根據不同的操作作出一些有趣的提示與動畫,使使用者操作更人性化、有趣化。正象這Office助手“大眼俠”一樣,Microsoft提供了代理軟體開發技術,稱為“Microsoft Agent”,它能支援中文。有強大的互動功能與人性特點,不僅能給出有趣的提示資訊,還能給出幽默的動畫效果,使用“Microsoft Agent”能讓您的程式增色不少。
“Microsoft Agent”是一套ActiveX控制,您可以到http://www.microsoft.com/msagent/default.asp下載其相關程式msagent.exe,安裝即可。Agent的動畫檔案支援單結構角色檔案(*.acs),也支援多結構角色檔案(*.acf),本文介紹的是前者。執行效果如下:
本文程式中所示範的James角色,如果您沒有安裝,可以先到http://www.msagentring.org/chars.htm下載安裝。
實現辦法:
一、建立工程myagent:
建立基於對話方塊的VC++工程MyAgent;
二、在視窗中添加ActiveX組件:Microsoft Agent:
正確安裝了“Microsoft Agent”之後,系統中會新增該ActiveX控制項可以使用,目前該ActiveX的最高版本是2.0,即“Microsoft Agent Control 2.0”;
三、開始使用"Microsoft Agent"
1、定義成員變數
利用ClassWizard為“Microsoft Agent”定義成員變數m_sysAgent,即:
CAgentCtlEx m_sysAgent;
2、定義其他變數
首選在視窗的標頭檔中增加引用如下標頭檔,即:
#include "agentctlcharacters.h"
#include "agentctlcharacterex.h"
#include "agentctlrequest.h"
再定義保護變數:
CAgentCtlCharacters m_Characters;
CAgentCtlCharacterEx m_Ex;
CAgentCtlRequest m_Request;
3、開始使用:
可在初始化表單進行動畫檔案的載入,即在CMyAgentDlg::OnInitDialog()中加入如下代碼:
COleVariant iv("0");
m_Characters=m_sysAgent.GetCharacters();
m_Request=m_Characters.Load("Jame",COleVariant("C:\\WINDOWS\\msagent\\chars\\James.acs"));
m_Ex=m_Characters.Character("Jame");
m_Ex.Show(iv);
為在視窗關閉時對動畫檔案進行卸載,在關閉視窗時可加入如下代碼:
m_Characters.Unload("Jame");
4、控制動畫檔案:
在程式中可以完全控制該動畫檔案來完成各種動作,如顯示、隱藏、文本提示、做動作,分別通過調用Show(),Hide(),Speek()以有Play()來完成。如想上動畫表示歡迎,則可使用如下命令:
m_Ex.Play("Greet");
具體的操作可參考控制項的協助檔案,或瀏覽http://www.microsoft.com/msagent/default.asp。
“Jame”動畫主要提供如下動作:
Acknowledge(承認)
Alert(警告)
Announce(聲明)
Blink(眨眼)
Confused(困惑)
Congratulate(祝賀)
Decline(拒絕)
Explain(解釋)
LookDown(向下看)
LookUp(向上移動)
MoveDown(向下移動)
MoveLeft(向左移動)
MoveRight(向右移動)
Greet(問候)
Read(讀)
Write(寫)
Search(尋找)
RestPose(恢複初始狀態)
Think(思考)
……
動畫檔案的下載及更詳細的資訊請參考:http://www.msagentring.org/chars.htm
本文只提及了Agent的一小部分功能,讀者可自行實現其他功能,不足之處請指出。
註:樣本程式在WindowsXP+Visual C++ 6.0環境下編譯通過。