关于COM组件事件的,急!!!在线等。。。

linsc__007 2011-09-24 11:04:58
现在有一个SDK包,提供了一堆的DLL文件,要进行二次开发。其中有个组件中有方法,有事件,就不知道事件是怎么回事!第一次接触COM组件。具体如下:
文档的说明:
HxhtQueryDevs::OnQuery 查询结果回调事件。
HRESULT OnQuery([in] ULONG nHandle, [in] BSTR lpszOrganID, [in] LONGLONG nError, [in] BSTR lpszResult);
参数
nHandle 查询唯一标示。
lpszOrganID 查询的机构。
nError0 表示成功,其他表示错误码,可以使用HxhtError::FormatError得到错误描述。
lpszResult 如果nError为0,该参数表示查询到的结果。
调用COM生成的代码:
public:
STDMETHOD(OnQuery)(unsigned long nHandle, LPCTSTR lpszOrganID, __int64 nError, LPCTSTR lpszResult)
{
HRESULT result;
static BYTE parms[] = VTS_UI4 VTS_BSTR VTS_I8 VTS_BSTR ;
InvokeHelper(0x1, DISPATCH_METHOD, VT_HRESULT, (void*)&result, parms, nHandle, lpszOrganID, nError, lpszResult);
return result;
}

其中nHandle lpszOrganID 这两参数可以从这个组件的方法函数中得到,现在我想要获取后两参数。不知道怎么做。请大家帮个忙帮我看看,急,感激不尽。
...全文
197 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
linsc__007 2011-10-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ynb119 的回复:]

引用 9 楼 linsc__007 的回复:
怎么直接判断啊!!!直接调OnQuery吗?不行吧!!!

晕,都说了回调了。
你不用调它,你把函数写好放那里就可以了,你正常调你的查询函数,
查询完事之后,程序自动调用OnQuery函数,你加个断点看看。

要不先查查什么叫做回调函数。
[/Quote]

谢谢了。问题解决了,稀里糊涂的解决了。还是要谢谢你。。。
枫桦沐阳 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 linsc__007 的回复:]
怎么直接判断啊!!!直接调OnQuery吗?不行吧!!!
[/Quote]
晕,都说了回调了。
你不用调它,你把函数写好放那里就可以了,你正常调你的查询函数,
查询完事之后,程序自动调用OnQuery函数,你加个断点看看。

要不先查查什么叫做回调函数。
W1nds 2011-09-30
  • 打赏
  • 举报
回复
帮顶了
linsc__007 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ynb119 的回复:]
顶!!
都说明了回调函数了。肯定是让你先调用查询函数(指定nHandle, lpszOrganID),完成后它会自动回调你编写的OnQuery函数,参数都是[in]的,你直接用它来判断是成功还是失败,然后做后续处理。
[/Quote]

怎么直接判断啊!!!直接调OnQuery吗?不行吧!!!
枫桦沐阳 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oyljerry 的回复:]
看上去像是连接点回调函数,
你需要继承连接点事件接口,然后实现HxhtQueryDevs::OnQuery,当COM对象需要回调时,就会调到你实现的OnQuery,同时你可以通过参数得到这些数据.
[/Quote]
顶!!
都说明了回调函数了。肯定是让你先调用查询函数(指定nHandle, lpszOrganID),完成后它会自动回调你编写的OnQuery函数,参数都是[in]的,你直接用它来判断是成功还是失败,然后做后续处理。
linsc__007 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oyljerry 的回复:]

看上去像是连接点回调函数,
你需要继承连接点事件接口,然后实现HxhtQueryDevs::OnQuery,当COM对象需要回调时,就会调到你实现的OnQuery,同时你可以通过参数得到这些数据.
[/Quote]
是回调函数,这个成员函数的类是继承于COleDispatchDriver,class CIHxhtQueryDevsEvents : public COleDispatchDriver,怎么用COleDispatchDriver连接事件接口啊。请详细点说一下,最好给个例子。先谢了!
oyljerry 2011-09-29
  • 打赏
  • 举报
回复
看上去像是连接点回调函数,
你需要继承连接点事件接口,然后实现HxhtQueryDevs::OnQuery,当COM对象需要回调时,就会调到你实现的OnQuery,同时你可以通过参数得到这些数据.
leer168 2011-09-26
  • 打赏
  • 举报
回复
全是[in]啊?能输出结果么?
要得结果得用[out]吧
redui 2011-09-26
  • 打赏
  • 举报
回复
如果组件是你自己的,别人连接你,你想触发事件让别人得到调用,自己直接调用 OnQuery 就行了,这就是触发
hbs_biscuit 2011-09-26
  • 打赏
  • 举报
回复
这个应该是事件,他掉你的吧
ljn398431 2011-09-24
  • 打赏
  • 举报
回复
帮顶下
linsc__007 2011-09-24
  • 打赏
  • 举报
回复
怎么没人帮我啊!!!搞了很久了都没弄明白!!!!

3,248

社区成员

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

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