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();
}
其次,如何能够从设备切换到另一个设备。从 无论菜单还是列表
答案 0 :(得分:3)
您需要拨打MessageBoxW
而不是MessageBox
。并删除演员阵容。所以它看起来像:
MessageBoxW(this->app, varName.bstrVal , L"", NULL);
这是字符编码的问题; COM中使用的字符串类型为BSTR
,可以与PWSTR
/ PCWSTR
类型相同使用。这与PCSTR
不兼容。
请记住,强制转换只是告诉编译器“嘿,我知道我在做什么,闭嘴”。除了编译器的消息实际上是试图帮助你,你告诉他们要离开。下次听他们说。