描述:
ActiveX控件除了事件和属性外,还有事件,用oleview能知道ActiveX的前二者,但没有显露事件,要知道ActiveX有哪些事件、以及这些事件的参数该如何知道?
解决方案1:
运行的时候可以用IDispatch::GetTypeInfoCount和IDispatch::GetTypeInfo获得
解决方案2: oleview可以得知道啊,我用oleview是可以查到的啊.
以MediaPlayer为例,通过oleview可以找到coclass MediaPlayer然后再下面可以找到_MediaPlayerEvents
就可以看到里面的事件了
以PlayStateChange
[id(0x00000bc4), helpstring("Sent when the control changes PlayState")]
void PlayStateChange(
[in] long OldState,
[in] long NewState);
在vc中就可以这样用0x00000bc4(十六进制)对应3012(十进制)
BEGIN_EVENTSINK_MAP(MultiMediaPlugInView, FormView)
ON_EVENT(MediaPlugInView, AFX_IDW_PANE_FIRST, 3012 /* PlayStateChange */, OnPlayStateChange, VTS_I4 VTS_I4)
END_EVENTSINK_MAP()