Microsoft Agent技术应用(2) [ 加载角色数据文件,创建一个角色(Character) ] ¦ [ 设置角色的语言、初始位置以及其它属性 ] ¦ [ 显示角色 ] AgentShell中定义以下全局变量来控制角色的属性和动作: 角色的消息ID: long g_lNotifySinkID。 角色ID: long g_lMyAgentID。 Agent控制指针: IAgentEx *g_pAgentEx。 角色指针: IAgentCharacterEx *g_pMyAgent。 角色消息反应器指针: AgentNotifySink *g_pSink。 使用以上变量可很容易的调用Agent的功能,如显示角色: BOOL agentShow() { HRESULT hRes; long lRequestID; if( !g_pMyAgent) return FALSE; hRes = g_pMyAgent->Show(FALSE, &lRequestID); if (FAILED(hRes)) return FALSE; return TRUE; } (二) 角色的语言处理 目前Agent支持很多种语言,不仅是显示,还有语音合成和语音识辨(对于中文,目前仅支持显示)。语言又分为主语言和子语言(或为副语言),如中文的主语言为中文(LANG_CHINESE),子语言则可为简体(SUBLANG_CHINESE_SIMPLIFIED)和繁体等。AgentShell中定义两个全局变量表达角色的语种: 主语言:DWord g_nMainLang。 子语言:DWORD g_nSubLang。 这样程序内必须根据当前语言的不同来显示不同的信息,如程序退出时的问候信: 首先定义不同的语言信息,可以为宏定义或资源数据: #define MES_GOODBYEL"Goodbye!" #define MES_GOODBYE_CH L"再见!" #define MES_GOODNIGHTL"Good night!" #define MES_GOODNIGHT_CH L"祝您晚安!" 以下为实现退出提示代码: void Goodbye() { if( g_bAgentOK) { SYSTEMTIME time;