- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个用 C++ 编写的 ActiveX 控件,它是我用 VS2008 和 ATL 创建的。在大多数情况下,它是一个非常标准的(没有从原始模板修改太多)控件,除了我没有使用 IDispatchImpl,而是创建了我自己的 IDispatchEx 实现。此控件仅在 Internet Explorer 中使用,我一直主要使用 IE8 进行测试。
一切都很好,除了出于某种原因,直到我将鼠标移到浏览器中托管对象标记的区域上时,InPlaceActivate 才会被调用;没有创建窗口,没有发送 WM_CREATE 消息等。
我已经尝试实现 DISPID_READYSTATE,但似乎无济于事。如果我调用 InPlaceActivate(OLEIVERB_UIACTIVATE);
来自 SetClientSite
方法,它通常有效,但这通常不是必需的。
为什么会这样?浏览器如何确定何时调用 InPlaceActivate(或触发它的任何调用)?
用于将ATL控件嵌入到页面中的标签是: <object id="plugin" type="application/x-vnd.FirebreathTemplatePlugin" width="300" height="300"></object>
您可以在此处找到该文件的完整源代码: http://code.google.com/p/firebreath/source/browse/src/ActiveXPlugin/FBControl.h
最佳答案
我找到了罪魁祸首。显然,OLEMSIC_ACTIVATEWHENVISIBLE 用于在 .rgs 文件中自动生成 %OLEMISC% 变量。但是,我已经覆盖了默认的 rgs 处理以提供我自己的变量,并且在这个过程中删除了一个关键行,这将添加一个:
[CLSID]/MiscStatus/1 = s '131473'
到注册表。这显然被浏览器用来决定如何初始化,并且该值具有 OLEMISC_ACTIVATEWHENVISIBLE“或”(|) 到它。将其重新添加进去,一切又恢复正常了。
关于c++ - 直到鼠标事件才调用 ATL 控件上的 InPlaceActivate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1891194/
我正在使用 embarcadero C++ XE8 32 位。当我包含以下文件时: #include #include #include #include 我收到以下错误: [bcc32 Fatal
我正在将 VS2008(VC++) 代码迁移到 VS2013。我收到以下错误: error C2664: 'HRESULT _CopyItfFromAdaptItf::copy(T **,ATL::C
我试图在 Visual Studio 2013 上运行这个程序,但是当我包含一个对象 - myparser.obj 时,我收到以下错误: 1>MyParser.obj : error LNK2001:
如何正确转换这种方式? VARIANT varIndex; CString csIndex; //Index BSTR csIndex = (LPCSTR)(_bstr
因此,我正在使用向导在 visual studio 2008 中创建一个 ATL 项目(此处推荐 - How to create ActiveX DLL in Visual C++ - 以及其他地方)
我有一个关于 ATL(C++) VS2010 的项目。我创建了一个对话框类。有两个按钮,想要添加文本框之类的东西。我读到负责此组件 CEdit。 CEdit* pEdit = (CEdit*)GetD
我使用 Visual Studio 2005 向导创建了一个 ATL COM Server C++ 项目。我使用 ATL 简单对象向导添加了一个新的 COM 类。现在,当我尝试从我的服务器(在 ATL
我们有一个已经存在很长时间(可能早在 Visual Studio 6)的 DLL 项目,它已针对 VS 的每个新版本进行了更新。该项目包含许多使用 ATL 实现的 COM 类。 升级到 VS 2010
我有一个使用 ATL 库的 C++ 项目。在 Visual Studio 2012 中,我曾经看到过以下两个文件: 程序文件 (x86)\Microsoft Visual Studio11.0\VC\
我以前从未使用过 COM,并且我的任务是编写一个使用某些第三方 COM 对象的应用程序。如果有人能给我一些关于如何使用它们的好教程,我将不胜感激。更直接的是,我似乎没有安装事件模板库。我在网上搜索过,
我必须创建 BYTE* 数组来为 Http 请求存储一些文本和二进制数据。像这样的东西: Content-Type: multipart/form-data; boundary=Asrf456BGe4
我不熟悉这个,可以使用kick start。 我正在使用 ATL(非托管 C++)用户控件并希望使用 ShockWave ActiveX 对象。我需要知道如何声明它,以便我可以设置属性或调用方法。 例
我使用 ATL 宏,如 A2T 和 A2CW。在开发计算机上一切正常。当我在另一台计算机上使用应用程序 (visual studio 2008 pro) 时 - ATL 宏转换的输出不可读。 我希望有
我正在尝试使用以下方式注册 atl 服务 ExeName.exe/服务 如此处所述:http://msdn.microsoft.com/en-us/library/74y2334x(VS.80).as
任何人都可以帮我找到一个最新的、工作的 ATL 项目,它有一个主窗口和一些组件吗?请看在上帝的份上,不要告诉我使用 WTL/Qt 或其他。我需要 ATL。没有关于它的最新项目。我只需要一个主窗口,仅此
我最近遇到了 atls.lib 的链接问题。我更新了链接器的附加依赖项行: comctl32.lib C:\WinDDK\7600.16385.1\lib\ATL\i386\atls.lib C:\W
ATL::CComModule::RegisterServer(TRUE) 调用究竟做了什么(它写入了哪些注册表项)? 最佳答案 对于每个使用 OBJECT_ENTRY_AUTO 的类宏,它将运行资源
我的硬盘中有 atls.lib,但无法将其链接到我的 Visual Studio 项目中。我知道 atls.lib 是 ATL 特定的库文件,并且我拥有所有 ATL 文件/ header /库。但是,
我正在为一个项目使用 ATL 和 WTL 的组合,并从 CWindowImpl 派生了我自己的类,它看起来像这样: class CMyControl : public CWindowImpl { pu
我正在尝试将XText与EMF的ATL模型结合起来进行模型转换。我正在读取我的 DSL,将其转储到 EMF 的 XMI 资源中,然后将其放入 ATL api 中:ATL 不会给我任何错误并且运行正确:
我是一名优秀的程序员,十分优秀!