gpt4 book ai didi

c++ - 在 MessageBox 中显示变体类型值

转载 作者:行者123 更新时间:2023-11-28 00:54:49 26 4
gpt4 key购买 nike

嗯,我遇到了一个小问题,事实上我希望能够看到我插入的设备列表我想在 MessageBox() 中首先看到它们但是这个变体让我很烦(^_^) 我试了很多方法都没有结果

    IMoniker *tmpMonk=NULL;
ULONG done;
VARIANT varName;
while(this->deviceClassEnum->Next(1,&tmpMonk,&done)==S_OK)
{
IPropertyBag *tmpBag=NULL;
tmpMonk->BindToStorage(0,0,IID_IPropertyBag,(void **)&tmpBag);
VariantInit(&varName);
checkIt(tmpBag->Read(L"FriendlyName",&varName,0));
// this i wana see what is inside but huuuuuuuuuuuuuh
MessageBox(this->app,TEXT((LPCSTR)varName.bstrVal),"",NULL);
VariantClear(&varName);
tmpBag->Release();
}

其次如何能够从一个设备切换到另一个。从任何菜单或列表

最佳答案

您需要调用 MessageBoxW 而不是 MessageBox。并移除石膏。所以它看起来像:

MessageBoxW(this->app, varName.bstrVal , L"", NULL);

这是字符编码的问题; COM中使用的字符串是BSTR类型,可以和PWSTR/PCWSTR类型一样使用。这与 PCSTR 不兼容。

请记住,转换只是告诉编译器“嘿,我知道我在做什么,闭嘴”。除了编译器的消息实际上是在试图帮助你,你告诉他们走开。下次听他们说。

关于c++ - 在 MessageBox 中显示变体类型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com