- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找到了 this问题,但他们没有使用指针。
我有一个方法,我的 COM 方法调用它需要一个指向 bool 的指针。这个 bool 用于从调用者取消长时间运行的进程(视频录制,如果你必须知道的话)。
我能否以某种方式转换它,但仍然让 VARIANT_BOOL 等于 FALSE,反之亦然?
代码
HRESULT YourObject::YourComMethod(VARIANT_BOOL* pVarBool)
{
callYourNonComMethodHere((bool*)pVarBool);
return S_OK;
}
更新
所以,我了解到,虽然您可以将 COM 参数用作指针,但它们没有任何用处。这实际上并没有引用来自调用者的指针。
因此,我必须做的是制作一个完全独立的 COM 对象,即我的 CancellationToken
。然后,在我的实现中,我可以调用 token.Cancel()
,然后 YourComMethod
将具有更新的 bool,指示长时间运行的方法应该取消。
我创建了一个示例项目来演示如何使用包装 COM 对象将指针传递给 bool。
https://bitbucket.org/theonlylawislove/so-blocking-com-call/src
最佳答案
如果操作正确,VARIANT_BOOL 应该是两个值之一。 VARIANT_TRUE 或 VARIANT_FALSE。偶尔一些尼安德特人不明白,由于存在所有错误的 COM 代码,我通常假设如果它不是 VARIANT_FALSE,那么它一定是真的。
所以:
HRESULT YourObject::YourComMethod(VARIANT_BOOL* pVarBool)
{
bool bval = (*pVarBool != VARIANT_FALSE); // do this if pVarBool is [in,out]
// bool bval = false; // otherwise do this if pVarBool is [out] only.
callYourNonComMethodHere(&bval);
*pVarBool = bval ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
}
经过 Matt 的一些澄清后,我认为这就是您想要做的。或者可能接近它的东西。
关于c++ - 如何将 VARIANT_BOOL* 转换为 bool*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23450926/
MS IDL 有 syntax for specifying a defaultvalue对于参数。我尝试为接受 VARIANT_BOOL 的函数指定默认值: [id(42)] HRESULT Foo
我有一个函数需要一个 short* 作为参数。我需要将其转换为 VARIANT_BOOL*。谁能告诉我一个可靠的方法来做到这一点? 我什至可以将 VARIANT_BOOL* 传递给函数,但是 VARI
我正在使用 ATL 在 C++ 中编写 COM 对象,但不确定是否应该为我的方法/属性使用 VARIANT_BOOL。该对象将由其他 C++ 应用程序调用,但我不能排除 .NET 的使用。 我可以坚持
我找到了 this问题,但他们没有使用指针。 我有一个方法,我的 COM 方法调用它需要一个指向 bool 的指针。这个 bool 用于从调用者取消长时间运行的进程(视频录制,如果你必须知道的话)。
我有一个方法接受VARIANT_BOOL指针的参数 STDMETHOD(get_Test)(VARIANT_BOOL* result) 我还有一个 BOOL 测试变量,我想将其传递给该方法。它必须是
使用 COM 时, boolean 值将作为 VARIANT_BOOL 传递,在 wtypes.h 中声明为 short。 true 和 false 也有预定义的值: #define VARIANT_
在 Visual Studio 2010 下,我正在使用 C++ 开发 64 位 ActiveX 控件。我遇到了一个似乎源于 Microsoft 库的数据损坏错误。这么多年了,真不敢相信库里居然还有这
我是一名优秀的程序员,十分优秀!