通知
すべてクリア
Topic starter
2002年12月6日 4:06 PM
Directshowを使用した、デバイスの列挙を行うためのコードを書いています。
IPropertyBag *pPropBag;
pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);
VARIANT varName;
varName.vt = VT_BSTR;
pPropBag->Read(LFriendlyName, &varName, 0);
// コンボボックスにデバイスの名前を列挙する
m_combo1.InsertString(-1,varName.bstrVal);
SysFreeString(varName.bstrVal);
pPropBag->Release();
pMoniker->Release();
ヘルプを見ながら、上のコードを書いてみました。
コンボボックスへデバイス名を入れる場合、
m_combo1.InsertString(-1, ? );
今は、適当にvarName.bstrValと入れているのですが、
?の部分に何を記述すればいいのか、わかりません。
VARIANT型だから、など関係するのでしょうか?
2002年12月6日 4:50 PM
Read関数がVT_BSTR型の値を返すことが保証されているのなら、
問題ないでしょう。
確実にVT_BSTR型が返ってくる保証が無いなら、
varName.bstrValを参照する前に、
varName.vt==VT_BSTRなのか確認します。
あるいは、VariantChangeTypeを使って、
VT_BSTRに(変換可能ならば)変換することもできます。