11得票3回答
ATL和WTL有什么区别?

我知道"WTL建立在ATL之上",但从实际角度来看这是什么意思? 在功能方面,ATL是WTL的子集吗? (即:ATL中的所有功能是否也存在于WTL中?) 我注意到维基百科表示ATL的开发状态是"current",而WTL最近的版本发布时间是2009年中期。这是否意味着如果我想使用Glass/...

8得票3回答
三元条件运算符"?:"和函数头中的LPCTSTR

也许有人可以为我解释一下: bool Func1(LPCTSTR sData) { if (sData) { ... } } 我这样调用了该函数: CString str = _T(""); Func1((str.IsEmpty() ? NULL : str)); 为什么函...

8得票2回答
ComPtr与CComPtr,As与QueryInterface的区别

我想知道ComPtr和CComPtr之间的确切区别,以及ComPtr::As()是否相当于CComPtr::QueryInterface()?我已经阅读了两者的文档,但是没有清晰的答案...

8得票3回答
如何使用ATL枚举COM对象(IDispatch)的方法?

使用ATL(VS2008),如何枚举给定IDispatch接口(IDispatch*)上可用的方法?我需要搜索具有特定名称的方法,并一旦获得DISPID,就调用该方法(我知道方法需要哪些参数)。理想情况下,我想使用智能COM指针(CComPtr<>)来完成此操作。 这是否可能?

11得票1回答
使用COM进行异常安全的内存处理

在使用COM时,我通常依赖于ATL智能指针,例如ATL::CComPtr和ATL::CComBSTR,用于资源管理。但我调用的一些方法使用输出参数来返回指向分配存储的指针,我必须释放它们。例如:WCHAR *pszName = nullptr; if (SUCCEEDED(pShellItem...

12得票3回答
如何将本地CComSafeArray返回到LPSAFEARRAY输出参数?

我有一个COM函数,应该通过LPSAFEARRAY*输出参数返回一个SafeArray。 该函数使用ATL的CComSafeArray模板类创建SafeArray。 我的天真实现使用CComSafeArray<T>::Detach()来将所有权从局部变量移动到输出参数:void f...

9得票2回答
如何创建一个从基类派生的ATL COM类?

"ATL简单对象"向导不提供一种指定新类派生自现有coclass及其接口的方法。在Visual Studio 2008中,如何创建一个新的ATL COM类,使其派生自现有类(即Base实现了IBase,我想创建一个新的Derived类派生自Base,并实现IDerived,其中IDerived...

25得票2回答
右单引号和撇号有何区别?

右单引号(U+2019)与撇号(U+0027)有什么区别? 这两个字符有何不同? 我遇到了这样的问题:我使用CAtlString从资源文件中加载字符串,在某些Windows安装中,当尝试加载包含U+2019的字符串时,LoadString会失败,但在其他一些Windows安装中它可以正常工...

31得票3回答
什么是我的$Foo ATL解决方案中的($Foo)PS项目用于?

在MSVC中创建ATL项目似乎会创建两个项目;后者的名称与前者相同,但名称末尾附加了“PS”。第二个项目的目的是什么,我如何确定是否需要它?

16得票1回答
在C++中托管Silverlight

我有些力不从心,希望能得到一些关于如何处理的建议。 基本上我想要做的是在我的C++应用程序中渲染和控制Silverlight。我想要的是像这样的东西: class silverlight_host { public: // Prio 1 silverlight...