About ActiveX Control About ActiveX Control 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因总是乱码,故内容如下:高分求助ATL高手!因我不擅长于C++,我用的是 Win32 汇编开发无窗口控件。有关连接点、持续性等等接口都测试OK,但IOleInPlaceObjectWindowless接口收不到OnWindowMessage消息流。而我用ATL开发的无窗口控件却有收到。在ATL中我所用了如下代码:class ATL_NO_VTABLE CAtlTest1 : public CComObjectRootEx<CComSingleThreadModel>, public IDispatchImpl<IAtlTest1, &IID_IAtlTest1, &LIBID_ATLTESTLib>, public CComControl<CAtlTest1>, public IPersistStreamInitImpl<CAtlTest1>, public IOleObjectImpl<CAtlTest1>, public IViewObjectExImpl<CAtlTest1>, public IOleInPlaceObjectWindowlessImpl<CAtlTest1>, public CComCoClass<CAtlTest1, &CLSID_AtlTest1>{public: CAtlTest1(){}DECLARE_REGISTRY_RESOURCEID(IDR_ATLTEST1)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CAtlTest1) COM_INTERFACE_ENTRY(IAtlTest1) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IViewObject) COM_INTERFACE_ENTRY(IOleObject) COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY(IOleInPlaceObject) COM_INTERFACE_ENTRY(IPersistStreamInit)END_COM_MAP()BEGIN_PROP_MAP(CAtlTest1)END_PROP_MAP()BEGIN_MSG_MAP(CAtlTest1)END_MSG_MAP()public: HRESULT OnDraw(ATL_DRAWINFO& di) { return S_OK; }};而我在汇编中也实现了不仅仅如上的接口(还包括ActiveX控件的其它接口),为什么就没有收到OnWindowMessage消息流。微软文档不是说无窗口控件只要实现了IOleInPlaceObjectWindowless接口就会收到消息吗?难道窗口不知道这个控件是Windowless控件吗?而且,我用汇编开发的控件为何IOleObject::DoVerb只收到鼠标双击的消息。而我用以上ATL代码,控件一加载就能收到一条DoVerb的消息(iVerb==OLEIVERB_INPLACEACTIVATE).我对照了ATL模板中的实现代码。并没有明显不同呀。敬请相关高手回答。MSDN相关资源:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/fabd6a0a-7b0c-4c99-af22-8b117addd5f7.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/fabd6a0a-7b0c-4c99-af22-8b117addd5f7.asp VC MFC实时数据显示 CxImage绘制带阴影的PNG图片,阴影会重叠,请教解决方案。 如何用vc编程实现.dat文件读取并显示 局域网中,如何获取windowXP+sp2的主机的名称? setwindowtext为什么不起作用?代码是。。 InstallShield的简单问题 在static控件上画图,我该怎样让他滚动 如何通过指针型函数返回值? 帮我看看这段代码,运行到::GetMessage()就出错! ____3721的秘密____可我不会 实现一个特殊的菜单 加DBT.H头文件后,在其他cpp中使用变量DEV_BROADCAST_DEVICEINTERFACE居然提示未定义
高分求助ATL高手!
因我不擅长于C++,我用的是 Win32 汇编开发无窗口控件。有关连接点、持续性等等接口都测试OK,但IOleInPlaceObjectWindowless接口收不到OnWindowMessage消息流。而我用ATL开发的无窗口控件却有收到。在ATL中我所用了如下代码:
class ATL_NO_VTABLE CAtlTest1 :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<IAtlTest1, &IID_IAtlTest1, &LIBID_ATLTESTLib>,
public CComControl<CAtlTest1>,
public IPersistStreamInitImpl<CAtlTest1>,
public IOleObjectImpl<CAtlTest1>,
public IViewObjectExImpl<CAtlTest1>,
public IOleInPlaceObjectWindowlessImpl<CAtlTest1>,
public CComCoClass<CAtlTest1, &CLSID_AtlTest1>
{
public:
CAtlTest1(){}DECLARE_REGISTRY_RESOURCEID(IDR_ATLTEST1)
DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CAtlTest1)
COM_INTERFACE_ENTRY(IAtlTest1)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IViewObject)
COM_INTERFACE_ENTRY(IOleObject)
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceObject)
COM_INTERFACE_ENTRY(IPersistStreamInit)
END_COM_MAP()BEGIN_PROP_MAP(CAtlTest1)
END_PROP_MAP()BEGIN_MSG_MAP(CAtlTest1)
END_MSG_MAP()public:
HRESULT OnDraw(ATL_DRAWINFO& di)
{
return S_OK;
}
};而我在汇编中也实现了不仅仅如上的接口(还包括ActiveX控件的其它接口),为什么就没有收到OnWindowMessage消息流。微软文档不是说无窗口控件只要实现了IOleInPlaceObjectWindowless接口就会收到消息吗?难道窗口不知道这个控件是Windowless控件吗?
而且,我用汇编开发的控件为何IOleObject::DoVerb只收到鼠标双击的消息。而我用以上ATL代码,控件一加载就能收到一条DoVerb的消息(iVerb==OLEIVERB_INPLACEACTIVATE).我对照了ATL模板中的实现代码。并没有明显不同呀。敬请相关高手回答。MSDN相关资源:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/fabd6a0a-7b0c-4c99-af22-8b117addd5f7.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/fabd6a0a-7b0c-4c99-af22-8b117addd5f7.asp