可能有点深度!需要比较熟悉COM的大侠!帮帮忙!

w12 2001-04-04 04:54:00
在COM里,我用了一个对话框,对话框里我引入了一个ACTIVEX控件,我重载它的鼠标移动响应事件,并写了一些代码,我设置了断点跟踪,但是发现在COM里面实现的对话框上所用的控件没有响应我所希望的鼠标移动事件,也就是说,我设置的断点没有跳到!

我作了一下测试,我使用了一般的基于对话框EXE文件,也是同样的使用了这个控件,也是同样的重栽了鼠标移动事件,也设置了断点,结果可以跟踪到事件!

请问这是怎么回事情?我该如何做才能让COM 里的控件也能响应事件通知?

请给我指条明路吧!
...全文
808 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
w12 2001-04-10
  • 打赏
  • 举报
回复
我并没打算用MFC。MFC对COM的支持不多,写出的组件也臃肿。
nicholas 2001-04-10
  • 打赏
  • 举报
回复
如果你用mfc,你可以用class wizard映射事件,如果用atl,对不起,自己写代码映射
w12 2001-04-07
  • 打赏
  • 举报
回复
谢谢bfsn!终于有人给出了正确答案。
我已经实现了过了,正准备删除贴子的时候见到了大侠,
能能再帮我一下,看看这个问题:
1、(插入ATL对象的时候有一个对话框类)我在上面加入了一个LIST控件,我打算用一个成员变量控制它,可是如果用类向导的话就会生成一个从CDialog继承下来的新类,使用了和一开始创建的对话框同样的资源ID,成员变量就加在了新类里面,这样一来我该如何控制这个LIST?
2、如何在COM里面创建一个无模式对话框,如果MFC没有的话?
w12 2001-04-07
  • 打赏
  • 举报
回复
jiafeng
w12 2001-04-07
  • 打赏
  • 举报
回复
谢谢指教。
w12 2001-04-07
  • 打赏
  • 举报
回复
谢谢,我明白了,看来很多东西应该使用Api 来完成。
bgsn 2001-04-07
  • 打赏
  • 举报
回复
所以,ATL对话框中的控件与属性映射无法实现。
假如你不惜牺牲ATL代码小的优点,你可以使用MFC的CDialog;否则,就必须使用API或者ATL的CDialogImpl.
bgsn 2001-04-07
  • 打赏
  • 举报
回复
VC class Wizard 还不支持ATL的对话框类,而仅仅支持MFC。
w12 2001-04-07
  • 打赏
  • 举报
回复
谢谢bgsn的回答,我本打算用SendMessage来处理,现在知道了更好的方法!
现在我只是对为什么会产生一个从继承的新类迷惑不解,不知道这样一来会有什么用处?
能给我解释吗,分全是你的,不管对与否!
bgsn 2001-04-07
  • 打赏
  • 举报
回复
to w12:
1.使用Api or 宏。 See Msdn article "List View Control Macros"
2.::CreateDialog or CDialogImpl::Create
_xiaolifeidao 2001-04-07
  • 打赏
  • 举报
回复
各位大哥,介绍几本com的入门书吧
谢过
bgsn 2001-04-06
  • 打赏
  • 举报
回复
See msdn article
SAMPLE: AtlSink Uses ATL to Create a Dispinterface Sink
bgsn 2001-04-06
  • 打赏
  • 举报
回复
Use ATL
1。首先实现事件接口。
class CYourCtrlEventImp:
public CComObjectRoot,
public IYourCtrlEvent
{
//响应事件函数
...
{

2。CComObject<CYourCtrlEventImp> *ptrEvent = new CComObject<CYourCtrlEventImp>;
CComPtr<IUnknown> ptrEvent;
DWORD dwCookie;
hr = AtlAdvise(ptrYourCtrl, ptrEvent, DIID_IYourCtrlEvent, &dwCookie);
w12 2001-04-05
  • 打赏
  • 举报
回复
没有人能指个研究的方向吗??
w12 2001-04-05
  • 打赏
  • 举报
回复
没有人能提供帮助吗??
sxbyl 2001-04-05
  • 打赏
  • 举报
回复
哦……你的控件是#import引入的,这个可能不一样,有时间我再去试试,现在反正是没时间了
w12 2001-04-05
  • 打赏
  • 举报
回复
我发现问题在于需要用连接点,看了有关资料,要使用连接点去激活事件响应,还要写一个接受器处理事件,不过具体实现没有看懂,希望懂这方面的能人援手,给个实例看看。
luxyi 2001-04-05
  • 打赏
  • 举报
回复
是不是消息处理函数在消息映射表里放错了位置?

又#import引入控件后你是如何创建这个控件的啊?
w12 2001-04-05
  • 打赏
  • 举报
回复
没人知道啊!
w12 2001-04-04
  • 打赏
  • 举报
回复
谢谢两位。
不过觉得用Hook并不合理,应该有解决的办法。
另外控件是用#import 引入的,在COM里面用控件的事件需要其它办法,并不是很简单了。
加载更多回复(3)

3,245

社区成员

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

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