采用异步方式来处理客户程序的各种请求,这样客户程序可以在
请求服务的同时进行自己的工作,当服务器完成一项请求时就会激发
RequestComplete事件,客户程序可以判断是哪一项请求已经结束,并做
相应的处理。Command事件是当用户使用鼠标或麦克风向动画人物发出命
令时激发的,客户程序可以通过IAgentUserInput接口来了解命令的具体
信息。
3.自定义命令
Agent服务器为每个动画人物都提供了一些缺省的命令,这些命令出现
在关联菜单或命令窗口中,客户程序可以通过IAgentCommands接口添加自定
义命令。
为了得到IAgentCommands的接口指针,应使用参数IID—IAgentCommands
来调用IAgentCharacter::QueryInterface(),IAgentCommands的Add()或
Insert()方法可以加入自定义命令,同时设置Caption、Visible和Voice属性,
指明该命令是否显示出来,显示在关联菜单中还是在命令窗口中。
Agent服务器为每个命令赋予一个ID值,客户程序可以使用这个ID值调用
IAgentCommands::GetCommand()方法,得到每个命令的IAgentCommand接口指
针,从而对单个命令的各种属性进行调整。
4. WAV文件代替语音合成
Microsoft Agent目前只支持英语的语音合成功能,要输出中文时只能用
WAV文件来代替。如果给IAgentCharacter::Speak()方法的第二个参数传递一
个WAV文件的路径,那么Agent服务器自动播放这个WAV文件,并在文字气球中
显示出第一个参数中包含的文字,如果给第二个参数传递一个带音节信息的
LWV文件的路径,则不需要在第一个参数中提供文字,因为LWV文件中包含有文
字信息。当使用LWV文件时,动画人物的嘴部动作能与输出的语音保持一致
WV文件时,动画人物的嘴部动作能与输出的语音保持一致,所以在可能的情况
应该尽量使用LWV文件,这种格式的文件可用Microsoft Agent Linguistic
Information Sound Editing Tool编辑WAV文件来生成。
5.其它一些COM接口
除了前面提到的接口外,Agent服务器还有其它一些COM接口。
IAgentCommandWindow允许客户程序访问或设置命令窗口的属性,包括位置、
大小和是否可见。IAgentSpeechInputProperties允许客户程序访问语音输入
功能的属性,其中大部分属性都是只读的。IAgentAudioOutputProperties允
许客户程序读取语音输出功能的部分属性。IAgentPropertySheet允许客户程
序访问或设置Agent服务器的属性表。IAgentBalloon允许客户程序访问文字
气球的属性,可以设置少数属性,如是否可见和字体名称。关于这些接口的具
体定义和用途请参考Microsoft Agent的帮助文档。
总 结
Microsoft Agent是一项较新的技术,它属于OLE的范畴,涉及较深的编程
理论,本文所介绍的只是从OLE自动化服务角度出发的最基本的使用方法,感
兴趣的读者可以参考Microsoft Press出版的《Inside OLE》(第二版)一书来进
一步了解OLE编程的知识,并参加Microsoft的Agent新闻讨论组(新闻服务器为
msnews.microsoft.com,讨论组
ip 0 IP # Internet protocol
icmp 1 ICMP # Internet control message protocol
ggp 3 GGP # Gateway-gateway protocol
tcp 6 TCP # Transmission control protocol
egp 8 &nbs