ActiveX内调用另外一个ActiveX。如果获取另外一个ActiveX的事件?

king0bear 2010-12-15 06:17:25
求助下:会VC的帮下忙
我用MFC编写一个ActiveX.我在这个ActiveX内动态创建另外一个控件ActiveX假设是控件A。
请问我如何获取控件A的事件??或者对控件A的事件做映射??

例如
1、用MFC ActiveX ControlWizard创建工程test;
2、在BOOL CTestApp::InitInstance()中第一行添加函数:
AfxEnableControlContainer();
3、在类CTestCtrl中添加Microsoft Media Player Control (你已经导入的类名)

类变量(对象)m_wmp;
4、为类CtestCtrl添加OnCreate消息;
5、在CtestCtrl::OnCreate()中创建Microsoft Media Player Control对象
m_wmp.Create();
6、为类CTestCtrl定制方法--给VBScript or JScript 使用;
但是不会如何获取

m_wmp的事件。
...全文
98 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddppqq 2010-12-20
  • 打赏
  • 举报
回复
IDispatch...
Jimmy_Xia 2010-12-17
  • 打赏
  • 举报
回复
我简单试了VC自带的控件,可以直接通过ClassWizard(类向导)来添加消息处理函数的。
不知道楼主不能添加消息是怎么回事,Microsoft Media Player Control这个控件是自己做的控件还是VC自带的?
xiaoxiaodianzi 2010-12-17
  • 打赏
  • 举报
回复
我试了下 编译是没有错误了!! 不过我只是空定义映射,没有事件响应函数。不知道能不能运行! 你可以试试
xiaoxiaodianzi 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 king0bear 的回复:]
引用 5 楼 xiaoxiaodianzi 的回复:
控件内部响应控件消息没有试过, 不过应用程序里面响应倒是做过。(个人感觉方法是一样的 你可以试下)。

C/C++ code

//在.h里声明事件响应函数。
afx_msg void OnConnectEventElabel(long ID, LPCTSTR IPaddr, long IPport, long Event);
/……
[/Quote]

我不知道你是报什么错误!! 我今天也试了下 确实报了一个错误。 我查了下MSDN,发现还需要在类定义里添加一个DECLARE_EVENTSINK_MAP(); 声明。 你加一个试试
king0bear 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaoxiaodianzi 的回复:]
控件内部响应控件消息没有试过, 不过应用程序里面响应倒是做过。(个人感觉方法是一样的 你可以试下)。

C/C++ code

//在.h里声明事件响应函数。
afx_msg void OnConnectEventElabel(long ID, LPCTSTR IPaddr, long IPport, long Event);
//在.cpp里定义事件接口和事件响应函数就可以了。
B……
[/Quote]
非常感谢你的关注。
这个操作我以前就测试过了。。。方法是行不通的。
BEGIN_EVENTSINK_MAP() 在里面根本就无法声明的。
声明会报错的
xiaoxiaodianzi 2010-12-16
  • 打赏
  • 举报
回复
控件内部响应控件消息没有试过, 不过应用程序里面响应倒是做过。(个人感觉方法是一样的 你可以试下)。

//在.h里声明事件响应函数。
afx_msg void OnConnectEventElabel(long ID, LPCTSTR IPaddr, long IPport, long Event);
//在.cpp里定义事件接口和事件响应函数就可以了。
BEGIN_EVENTSINK_MAP(CTestELabelDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTestELabelDlg)
//}}AFX_EVENTSINK_MAP
ON_EVENT_RANGE(CTestELabelDlg, ID_ELABEL, ID_ELABEL + 100, 1 /* ConnectEvent */, OnConnectEventElabel, VTS_I4 VTS_BSTR VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

void CTestELabelDlg::OnConnectEventElabel(long ID, LPCTSTR IPaddr, long IPport, long Event)
{



zzw820626 2010-12-16
  • 打赏
  • 举报
回复
再研究研究嘛,何必放弃,转过去也有问题的
king0bear 2010-12-16
  • 打赏
  • 举报
回复
现在打算转到ATL框架下做了。。。哎多日的努力白费了
king0bear 2010-12-16
  • 打赏
  • 举报
回复
最新消息:
我尝试了在ACTIVE中新增一个CDialog在CDialog做操作。
结果依旧是出错啊。
编译 跟初始化都没有问题。
当调用控件A时候。就直接报错了。
king0bear 2010-12-15
  • 打赏
  • 举报
回复
对了 ACTIVEX 使用的是MFC框架
king0bear 2010-12-15
  • 打赏
  • 举报
回复
希望能告诉我大致的步骤如何操作。
我是新手。。。谢谢
zzw820626 2010-12-15
  • 打赏
  • 举报
回复
连接点
zyyoung 2010-12-15
  • 打赏
  • 举报
回复
dll注入

3,245

社区成员

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

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