网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
Microsoft Agent的COM接口编程
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
lib odbccp32.lib,最后要确保uuid.lib、odbc32.lib  
odbccp32.lib,最后要确保系统中安装有Microsoft Agent及动画人物数据。

   2.创建Microsoft Agent对象
  创建OLE对象之前需要初始化OLE,这由OleInitialize()函数来完成,如果
OLE
初始化不成功,那么就无法继续执行后面的代码,创建对象由
CoCreateInstance()
函数来完成:
  if (FAILED(OleInitialize(NULL))) return -1;//
初始化OLE
  hRes = CoCreateInstance(CLSID—AgentServer,NULL,CLSCTX—SERVER,
IID—IAgent,(LPVOID *)&pAgent); //创建Microsoft Agent Server的实例
  if (FAILED(hRes)) return -1;
  CoCreateInstance()的第一个参数是对象的CLSID(类代码),Microsoft  
Agent Server的CLSID为定义在AgtSvr—i.c文件中的CLSID—AgentServer,
这个128位的编码唯一地标识了Agent服务器,服务器所在路径和运行参数等
信息都放在系统注册表中;第二个参数一般情况下设为NULL;第三个参数用来
指明对象的运行环境,如远程或本地,此处设为CLSCTX—SERVER;第四个参数
指明用来与对象通信的接口的ID,这也是一个128位的编码,Agent的接口ID为
IID—IAgent;第五个参数是用来接收IAgent的接口指针。

  如果Microsoft Agent Server还没有在内存中运行,那么
CoCreateInstance()会启动它并创建一个Agent对象,如果服务器已经运行了,
则CoCreateInstance()会与之连接并创建一个Agent对象。当所有的Agent对象
都被释放了后,服务器自动退出。

   3.装入动画人物数据
  下面的代码调用IAgent::Load()方法来装入一个动画人物的数据,由于
Agent服务器在自己的内存空间中运行,所以传送的字符串变量需要用
SysAllocString()来分配内存:
  VariantInit(&vPath); //初始化OLE变量
  vPath.vt = VT—BSTR; //指明变量类型为Unicode的字符串
  vPath.bstrVal=SysAllocString(kpwszCharacter);//kpwszCharacter
为动画人物数据的存放路径
  hRes = pAgent->Load(vPath,&lCharID,&lRequestID); //装入数据,
人物ID在lCharID中返回
  hRes = pAgent->GetCharacter(lCharID,&pdCharacter); //获取
lCharID的IDispatch接口指针
  调用IDispatch::QueryInterface()方法可以得到IAgentCharacter的接
口指针:
  hRes = pdCharacter->QueryInterface(IID—IAgentCharacter,  
(LPVOID *)&pCharacter);
  pdCharacter->Release(); //释放IDispath 通过IAgentCharacter接
口就可以调用动画人物支持的各种方法了:
  hRes = pCharacter->Show(FALSE, &lRequestID); //显示动画人物
  hRes = pCharacter->MoveTo(320,240,100,&lRequestID); //移动动
画人物到屏幕中央
  bszSpeak = SysAllocString(L"Hello World!"); //分配字符串
  hRes = pCharacter->Speak(bszSpeak, NULL, &lRequestID); //让动
画人物说话
  SysFreeString(bszSpeak); //释放字符串所占内存

   4.释放对象
  程序在退出之前需要把创建的Agent对象释放:
  if (pCharacter) {
  pCharacter->Release(); //释放IAgentCharacter接口
  pAgent->Unload(lCharID); //卸载动画人物数据
  }
  pAgent->Release(); //释放Agent对象
  VariantClear(&vPath); //清除OLE变量
  VariantClear(&vPath); //清除OLE变量

   进一步的编程要点
  前面介绍的是调用Microsoft Agent服务器最基本的一些步骤,为了完
成比较实际的任务,客户程序还应根据自己的情况考虑下面的一些编程要点。

   1.检查Agent Server的版本
  OLE要求组件或对象具有向后兼容性,
  • 上一篇资讯: 设计网络服务器ISAPI
  • 下一篇资讯: 如何合并两个ICON
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号