求助下:会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的事件。
我用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的事件。
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)
{
}
这个操作我以前就测试过了方法是行不通的。
BEGIN_EVENTSINK_MAP() 在里面根本就无法声明的。
声明会报错的
我尝试了在ACTIVE中新增一个CDialog在CDialog做操作。
结果依旧是出错啊。
编译 跟初始化都没有问题。
当调用控件A时候。就直接报错了。
我不知道你是报什么错误!! 我今天也试了下 确实报了一个错误。 我查了下MSDN,发现还需要在类定义里添加一个DECLARE_EVENTSINK_MAP(); 声明。 你加一个试试
不知道楼主不能添加消息是怎么回事,Microsoft Media Player Control这个控件是自己做的控件还是VC自带的?