问题标签 [atl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4560 浏览

c++ - COM 错误 0x80004003(无效指针)访问 MS Outlook 联系人

我是一些 ATL 代码,它使用智能 COM 指针遍历 MS Outlook 联系人,在某些 PC 上,我收到每个联系人的 COM 错误 0x80004003(“无效指针”)。相同的代码在其他 PC 上运行良好。代码如下所示:

我想知道是否有任何其他应用程序/加载项可能导致这种情况?欢迎任何帮助。

0 投票
2 回答
5416 浏览

c# - 解决一个 COM [out] VARIANT* 包含 parray 作为 C#.net 中 BSTR 的 SAFEARRAY

问题:我有一个带有 IDL 方法的 COM 服务器:

在头文件中,这变为:

实施:

//这里添加了CInternals类来补图

int CInternals::CollectDeviceStrings(CComVariant* pList) { HRESULT hr = S_OK; BOOL bRet = FALSE;HRESULT 小时 = S_OK;

}

在 C# 中的 CS 文件中

关键是“out oResult”对象都不起作用。

欢迎任何建议。

0 投票
3 回答
3383 浏览

c++ - “班级未注册”是哪个班级?

考虑这段代码:

即我有一段代码可以实例化我的对象。有时(安装错误)它会失败,因为某些类没有正确注册。(我没有特别的问题,在这里进行一般性的讨论。)

有没有办法,从捕获的异常或其他方面,意识到哪个类失败了?A 曾考虑制作一个我自己的包装器,它存储像gLastCreateAttemptUuid这样的变量,但感觉很麻烦。

此外,假设 SomeClass 反过来尝试实例化其他未注册的东西。然后可以找出根本问题吗?

0 投票
3 回答
1351 浏览

c++ - 在多线程环境中使用 CList

我在多线程环境中使用 CList,但 GetHead 方法一直存在问题。我有一个线程将数据添加到列表中,另一个线程从列表中读取和删除数据。这是阅读部分:

这是插入部分:

这是删除部分

为什么运行时会出现运行时错误。它总是失败

有了这个断言:

而 m_pNodeHead 值为:

  • pNext 0x00000000 {pNext=??? 上一页=???数据={...} } CList > >,ATL::CStringT > > &>::CNode *
  • pPrev 0x00000000 {pNext=??? 上一页=???数据={...} } CList > >,ATL::CStringT > > &>::CNode *
  • 数据 "" TESTSETSE ATL::CStringT > >
0 投票
6 回答
3954 浏览

c++ - 无法使 ATL 连接点正常工作

我正在尝试使用 ATL 创建一个 COM 组件,并且我想为我的 VB 客户端引发事件。我发现了许多教程,所有这些教程的细节似乎都各不相同,而且似乎都没有生成一个可行的解决方案。这是我正在做的事情:

(使用 Visual Studio 2008):

  1. 创建一个新的 ATL DLL 项目。我已经调用它了ATLEventTest
  2. 类视图:右键单击ATLEventTest,添加了一个新的 ATL 简单对象类。我称之为这个MyObject,它产生了CMyObject,,IMyObject等等......
  3. 该对象是通过以下方式创建的:a) 单元线程 b) 聚合 c) 双接口 d) ISupportErrorInfo e) 连接点

  4. 右键单击CProxy_IMyObjectEvents<T>,单击“添加功能”

  5. 函数的返回类型为 void,命名为someEvent,并采用int testParam.
  6. 重建。
    (此时,我应该能够在某处看到“实施连接点”。我没有……)
  7. 右键单击CMyObject。'添加连接点'
  8. 将“ _IMyObjectEvents”移到列表中。
  9. 在我的解决方案中进行了代码搜索。到处都找不到someEvent
  10. 再次添加该someEvent功能。现在,它位于 ATLEventTest_i.h
  11. 应该可以调用fire_someEvent(...)我的代码,但不能。

这一直让我发疯,试图让它发挥作用。如果有人能看到我做错了什么,我将不胜感激任何更正、提示、黑客等。

在这一点上,我很想说把向导搞砸了,直接尝试修改 c++ 和 idl,但我有一种感觉可能不会更好:(

0 投票
1 回答
1830 浏览

c++ - SetThreadLocale 和 UTF8

所以我想使用 SetThreadLocale 将线程代码页设置为 UTF8。到目前为止,我一直在使用 atl 字符串转换宏的第二个参数,例如“CT2A(szBUF, CP_UTF8)”来执行此操作。但是我希望能够在开始时使用 SetThreadLocale() 设置一次线程代码页,而不必再次使用转换宏的第二个参数。

我该怎么做呢?SetThreadLocale 不会采用像 CP_UTF8 这样的代码页参数,而只是一个 LCID。我应该提供哪些参数 SetThreadLocale 来实现这一点?

请记住,我没有特别的语言。我得到的字符串可能是日语、韩语、英语等。到目前为止,在将 CP_UTF8 指定为转换宏的第二个参数时,我对这种字符串组合没有任何问题。您可能会问“那么为什么不继续使用第二个参数”。回答,“因为处理代码的团队成员很容易忘记它。如果它能够使用转换宏的默认 1 参数版本正常工作,那就太好了。”

0 投票
2 回答
2380 浏览

c++ - 错误使用 CComPtr 对象导致的编译错误

我在我的类中定义了以下CComPtr对象和方法:

在我的类的构造函数中,我mRawPdu通过初始化列表初始化为 0。如果尚未初始化,则该getRawPdu()方法使用惰性评估。mRawPdu

编译代码时,出现以下错误:

关于可能导致这种情况的任何建议?

0 投票
4 回答
2484 浏览

com - 如何从 ATL activex 控件将错误字符串和错误代码返回到 VB6?

我正在尝试使用CComCoClass::Error向 VB6 返回详细错误,但似乎我只能返回错误代码/或/消息 - 但不能同时返回两者。

在 VB6 端的 Err.Description 中导致通用的“方法 'Request' of object 'IMyInterface' failed”错误消息(但 Err.Number 中的 ERROR_CONNECTION_INVALID),而

导致相应的错误消息,但 Err.Number 中的通用错误代码。我怎样才能两全其美?

0 投票
7 回答
2000 浏览

com - COM MFC ATL值得学习吗?

现在值得学习 COM MFC ATL WTL 吗?

0 投票
1 回答
1678 浏览

c++ - CA2W 给了我一个“'AtlThrowLastWin32':找不到标识符”错误

当我按照MSDN 文档在 Visual Studio 2005 中使用 CA2W 将 big5 字符串转换为 unicode 字符串时遇到了一个奇怪的编译错误。

这是我写的代码:

编译错误:error C3861: 'AtlThrowLastWin32': identifier not found

我不知道这怎么会发生。AtlThrowLastWin32的文档显示需要atldef.h,但是在atldef.h中找不到AtlThrowLastWin32的声明。