如何从 CMFCPropertyGridProperty ComboBox 中获取选项?

Posted

技术标签:

【中文标题】如何从 CMFCPropertyGridProperty ComboBox 中获取选项?【英文标题】:How to get the option from 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);

【问题讨论】:

新来的?请收下tour 并阅读How to Ask。 【参考方案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.


查找:

CMFCPropertyGridProperty::GetValue CMFCPropertyGridProperty::GetOption CMFCPropertyGridProperty::GetOptionCount COleVariant

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

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

virtual const _variant_t&amp; GetValue() const;

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

【讨论】:

以上是关于如何从 CMFCPropertyGridProperty ComboBox 中获取选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

如何从 Firebase 获取所有设备令牌?

如何直接从类调用从接口继承的方法?

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

如何从Mac从android studio中的fabric注销? [复制]

如何从设备中获取 PDF 文件以便能够从我的应用程序中上传?