MFC做的一个嵌套控件。如何在VB中捕获其子控件的事件?

时间:2021-08-12 20:36:11
两个子控件,树和网格。合成的一个大控件上面是树控件,下面是网格控件。 
大控件通过两个属性分别返回子控件对象。TreeCtrl 和 GridCtrl,代码:return m_treeCtrl.GetControlUnknown(); 

请问如何在VB中捕获其子控件的事件。 
通常:dim WithEvents tree as TreeCtrl, 
但是在 
set tree = bigCtrl.TreeCtrl 时出现了 error 13: type mismatch 
vb中会对 bigCtrl.TreeCtrl.QueryInterface (IID),此处的IID是OCA包装的接口,固然会返回E_NOINTERFACE。 

请高手点拨,如何解决此种问题?大控件做事件转发倒是可以,但是事件很多的哦。。。

5 个解决方案

#1


CWnd::GetControlUnknown 
If this object does not represent an OLE control, the return value is NULL.
你的tree是activex control?

#2


没有用过

#3


用连接点不行吗?

#4


是的。我的控件里面是2个子控件。ActiveX控件。
我就是想知道外界如何捕捉 子控件 的事件。子控件的dispatch指针我已经返回了

#5


Set   tree   =   bigCtrl.TreeCtrl   时出现了   error   13:   type   mismatch 
你的代码里还没有生成呢,改为Set   tree   = new  bigCtrl.TreeCtrl ,如果这里生成失败,那么就是控件的问题了

#1


CWnd::GetControlUnknown 
If this object does not represent an OLE control, the return value is NULL.
你的tree是activex control?

#2


没有用过

#3


用连接点不行吗?

#4


是的。我的控件里面是2个子控件。ActiveX控件。
我就是想知道外界如何捕捉 子控件 的事件。子控件的dispatch指针我已经返回了

#5


Set   tree   =   bigCtrl.TreeCtrl   时出现了   error   13:   type   mismatch 
你的代码里还没有生成呢,改为Set   tree   = new  bigCtrl.TreeCtrl ,如果这里生成失败,那么就是控件的问题了