【问题标题】:How to get the option from CMFCPropertyGridProperty ComboBox?如何从 CMFCPropertyGridProperty ComboBox 中获取选项?
【发布时间】:2020-07-15 11:45:38
【问题描述】:

如何从CMFCPropertyGridProperty类的ComboBox中获取选项

CMFCPropertyGridProperty* pShpType_S = new CMFCPropertyGridProperty(_T("shpType_S"), shpType_S, _T("shpType_S"));

pShpType_S->AddOption(_T("POINT"));
pShpType_S->AddOption(_T("LINE"));
pShpType_S->AddOption(_T("BOX"));
pShpType_S->AddOption(_T("CIRCLE"));
pShpType_S->AddOption(_T("SPHERE"));
pShpType_S->AddOption(_T("MESH"));
pShpType_S->AllowEdit(FALSE);

【问题讨论】:

标签: visual-c++ mfc


【解决方案1】:

你应该可以使用:

CMFCPropertyGridProperty* pProperty = ...;
COleVariant vProperty = pProperty->GetValue();
if (vProperty.vt == VT_BSTR)
{
    CString strValue = vProperty.bstrVal;

    // If you also want the index
    bool bFound = false;
    int iNumOptions = pProperty->GetOptionCount();
    for (int iOption = 0; iOption < iNumOptions; iOption++)
    {
        if (strValue.CollateNoCase(pProperty->GetOption(iOption)) == 0)
        {
            // Match!
            bFound = true;
            break;
        }
    }
    // iOption has the index value.
}

查找:

变体可以包含几种不同类型的值,您必须检查.vt 成员。对于组合属性,该值将是一个文本字符串,因此您检查 [VT_BSTR][1]

[CMFCPropertyGridProperty::GetValue][1]的实际定义是:

virtual const _variant_t&amp; GetValue() const;

所以您也可以使用_variant_t 代替COleVariant。但我用的是后者。

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    相关资源
    最近更新 更多