一个ActiveX组件,能不能在COM里面调用它的方法

f26511314 2005-12-13 01:24:29
rt
...全文
157 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
XXandOO 2005-12-15
  • 打赏
  • 举报
回复
to 巧克力饼
Dlg_Proc就是dialog的窗口处理过程,就和普通的windows窗口过程是一样的。
接口IID当然是activex里你要调用的函数的接口的IID,这里我写错了一点,__uuidof就是把接口名字转成IID用的,应该是__uuidof(接口名字)
f26511314 2005-12-15
  • 打赏
  • 举报
回复
to XXandOO

AtlAxCreateDialog(_Module.GetModuleInstance(), MAKEINTRESOURCE(你对话框的资源ID), NULL, Dlg_Proc, 0) ///////////////Dlg_Proc怎么定义


hr = wndActivex.QueryControl(__uuidof(接口IID), (void**)&pActivex); /////接口IID是谁的接口ID
loverx 2005-12-14
  • 打赏
  • 举报
回复
而且体积小,就是开发麻烦一点,直接用SDK写
loverx 2005-12-14
  • 打赏
  • 举报
回复
ATL composed control
可以实现你得要求,可以把你得ACTIVEX控件拉上去
形成复合控件
f26511314 2005-12-14
  • 打赏
  • 举报
回复
我做了一个简单的ActiveX控件,只有一个方法 int Test() 返回一个整数值,

用MFC创建个对话框作为Container,加入这个ActiveX控件,然后可以调用方法Test()

但是在COM里面如何调用,COM里面能创建对话框吗,COM能做Container吗


wshcdr 2005-12-14
  • 打赏
  • 举报
回复
可以调用吧
XXandOO 2005-12-14
  • 打赏
  • 举报
回复
sdk都可以别说atl了,方法很简单,atl工程里加个对话框资源,把activex拖进去,生成一个无窗口的无模式对话框:
AtlAxCreateDialog(_Module.GetModuleInstance(), MAKEINTRESOURCE(你对话框的资源ID), NULL, Dlg_Proc, 0);
取得activex子窗口:
CAxWindow wndActivex = GetDlgItem(对话框窗口句柄, activex的资源ID);
取得接口指针:
hr = wndActivex.QueryControl(__uuidof(接口IID), (void**)&pActivex);
好啦,用pActivex指针调用函数就可以了。
loverx 2005-12-14
  • 打赏
  • 举报
回复
向导--ATL---ATL项目

然后添加类---ATL控件

---向导对话框--选择复合控件

结果是:
会出现一个类似对话框的“航母”
右键插入ACTIVEX控件,把你的飞机停上去
至于细节怎么写,那是另外一个话题~~~
f26511314 2005-12-14
  • 打赏
  • 举报
回复
to loverx

能不能说的详细一点
f26511314 2005-12-13
  • 打赏
  • 举报
回复
能不能具体一点
firmbird 2005-12-13
  • 打赏
  • 举报
回复
也可以作为CComObject模板类的参数,直接实例化后调用相关的类方法
kongguangming 2005-12-13
  • 打赏
  • 举报
回复
按com的方式调用

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧