描述:
1 使用ATL建立复合控件,在建立的时候我选择了选择Support ISupportErrorInfo和Support Connection Points。
2 现在我想建立一个事件,比如
OnStart(UINT uMsg,WPARAM wParam,LPARAM lParam, BOOL& bHandled)
不知道该如何实现这个连接点,我按照操作并没有生成代理类CProxy_IXXXXEvents,
没有**CP.h/**CP.cpp等。
3向导已经帮我生成的有:
3.1
__interface _ITVUWmeCtrlEvents
{
[id(1), helpstring("method OnStarted")] void OnStarted(UINT uMsg, WPARAM wParam, LPARAM lParam, [out,retval] BOOL* bHandled);
};
3.2
// CTVUWmeCtrl
[
coclass,
threading("apartment"),
vi_progid("TVUMediaCtl.TVUWmeCtrl"),
progid("TVUMediaCtl.TVUWmeCtrl.1"),
version(1.0),
uuid("DAF8350F-6882-48E9-982A-0C5E012724C1"),
helpstring("TVUWmeCtrl Class"),
event_source("com"),
support_error_info(ITVUWmeCtrl),
registration_script("control.rgs")
]
3.3
class ATL_NO_VTABLE CTVUWmeCtrl :
public CStockPropImpl<CTVUWmeCtrl, ITVUWmeCtrl>,
public IPersistStreamInitImpl<CTVUWmeCtrl>,
public IOleControlImpl<CTVUWmeCtrl>,
public IOleObjectImpl<CTVUWmeCtrl>,
public IOleInPlaceActiveObjectImpl<CTVUWmeCtrl>,
public IViewObjectExImpl<CTVUWmeCtrl>,
public IOleInPlaceObjectWindowlessImpl<CTVUWmeCtrl>,
public IPersistStorageImpl<CTVUWmeCtrl>,
public ISpecifyPropertyPagesImpl<CTVUWmeCtrl>,
public IQuickActivateImpl<CTVUWmeCtrl>,
public IDataObjectImpl<CTVUWmeCtrl>,
public CComCompositeControl<CTVUWmeCtrl>
{
public:
CTVUWmeCtrl()
{
}
__event __interface _ITVUWmeCtrlEvents;
DECLARE_PROTECT_FINAL_CONSTRUCT()
}
我该怎么实现呢,我看有人说在激发事件的地方写
__raise OnStarted(uMsg, wParam, lParam, bHandled); 是这样吗。
解决方案1:
1、右击_ITVUWmeCtrlEvents,添加函数OnStarted
2、编译idl
3、右击CTVUWmeCtrl类,在添加里选实现连接点