visual-c++ - 如何从 CMFCPropertyGridProperty ComboBox 中获取选项?
问题描述
如何从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);
解决方案
您应该能够使用:
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& GetValue() const;
所以你也可以使用_variant_t
代替COleVariant
. 但我使用后者。
推荐阅读
- android - kotlin 协程流中的并发
- postgresql - 是否可以使用带有 npgsql 的 EF CORE 3.1 中的 UNACCENT 扩展为 postgresql 进行选择?
- java - 为什么即使将目录设置为只读,Files.isWritable() 方法也会为目录返回 true?
- javascript - JQuery:图像上的 Onload 事件不起作用
- python - 无法从 Python 连接到 Snowflake
- itext7 -
- java - 使用 CameraX 的应用程序崩溃:java.lang.IllegalArgumentException
- python - 熊猫找到具有特定值的几行
- javascript - 如何在javascript中将对象属性字符串转换为整数
- solr - Solr Searcher OOM ,但不会使服务崩溃,也不会重新启动