如何将VARIANT_BOOL*转换为bool*
How to convert VARIANT_BOOL* to bool*
我发现了这个问题,但他们没有使用指针。
我有一个方法,我的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/srcVARIANT_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的澄清,我认为这就是你想要做的。或者更接近于它
相关文章:
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 从标准::字符串到标准::矢量<bool>的快速转换
- 从标准::未来<void>到非标量标准::未来<bool>引发的错误转换
- 如果类对象需要在 C++ 中转换为 int,为什么会调用 "operator bool()"?
- 从nullptr_t转换为bool:有效与否
- 为什么这个GitHub项目将字符串转换为bool
- 我无法将'2D array whit bool'转换为"空 2D 数组布尔值"(用于生命游戏)
- 错误:无法将"dirent*"转换为"search_directories(std::string, std::list<start_tournament_info_t*>&, bool)
- 无法将“ bool”转换为“ gzfile {aka gzfile_s*}”
- 防止在执行时将两个类中的两个对象转换为 bool:if(a!=b)
- C++变体用bool转换构造函数
- 为什么函数向bool存在隐式转换
- Bool 在 'std::rel_ops' 示例中进行强制转换
- 为什么显式 bool() 转换在上下文转换中不发生
- Visual Studio无法在布尔运算的上下文中实例化强制转换运算符模板(T=bool)
- 为什么C/C++会自动将char/wchar_t/short/bool/enum类型转换为int
- 错误 C2440: 'type cast':无法从 'bool' 转换为 'CString'
- C++11 无法将 std::condition_variable::wait 从 'void' 转换为 'bool'
- 为什么显式运算符 bool 允许我转换为任何基元类型
- 将位集数组转换为矢量<bool>