コンボボックスにデバイスの列挙をしたい

[戻る]
あさひ 2002/12/06(金) 16:06:07
Directshowを使用した、デバイスの列挙を行うためのコードを書いています。

IPropertyBag *pPropBag;
    pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);

    VARIANT varName;
    varName.vt = VT_BSTR;
    pPropBag->Read(L"FriendlyName", &varName, 0);

    // コンボボックスにデバイスの名前を列挙する
    m_combo1.InsertString(-1,varName.bstrVal);

    SysFreeString(varName.bstrVal);
    pPropBag->Release();
    pMoniker->Release();

ヘルプを見ながら、上のコードを書いてみました。
コンボボックスへデバイス名を入れる場合、

m_combo1.InsertString(-1,  ?   );

今は、適当にvarName.bstrValと入れているのですが、
?の部分に何を記述すればいいのか、わかりません。
VARIANT型だから、など関係するのでしょうか?

dairygoods 2002/12/06(金) 16:50:13
Read関数がVT_BSTR型の値を返すことが保証されているのなら、
問題ないでしょう。

確実にVT_BSTR型が返ってくる保証が無いなら、
varName.bstrValを参照する前に、
varName.vt==VT_BSTRなのか確認します。

あるいは、VariantChangeTypeを使って、
VT_BSTRに(変換可能ならば)変換することもできます。

古いスレッドには追加発言できません。