HRESULT CGenerateObjectPropertiesSelectDlg::GetObjectProperty (IObjectProperty **ppIObjProp) { // Beschreibungstext setzen os_string strObjProp(g_cbNil), strObjPropFull(g_cbNil); if (S_OK == m_pObjProps -> GetSelectedObjProp(strObjProp, &strObjPropFull)) { // derzeit selektierte Objekteigenschaft näher beschreiben WObjectProps Props (GetObjectProps()); WEnumObjProps Enum; WObjectProperty ObjProp; if (SUCCEEDED(Props -> EnumObjectProps(Enum.ppi())) && SUCCEEDED(Enum -> FindByName(strObjPropFull.c_str(), ppIObjProp))) { return S_OK; } } return S_FALSE; }
bool CSelectObjectPropTree::InitControl (void) { if (!Control::FInit()) return false; // Initialisieren ResourceFile RF (g_pDLLName); m_ilProps.CreateList (ResID(IDB_OBJPROPTYPES, &RF), 16, 0, RGB(255, 0, 255)); m_Items.erase(); // ImageList zuweisen CImageList *pIL = SetImageList (&m_ilProps, TVSIL_NORMAL); if (pIL) delete pIL; m_Items.erase(); // Objekteigenschaften in Gruppen sortiert im Baum einhängen CEierUhr Wait (GetParent()); HRESULT hr = m_Props -> OnNewReferenceObject (0L); // alle ObjProps installieren if (FAILED(hr)) return false; DEX_SetMustInitOPFs(FALSE); WEnumObjProps Enum; hr = m_Props -> EnumObjectProps (Enum.ppi()); if (FAILED(hr)) return hr; // Objekteigenschaften durchgehen WObjectProperty Prop; char cbPropInfo[_MAX_PATH]; for (Enum -> Reset(); S_OK == Enum -> Next (1, Prop.ppu(), NULL); /**/) { // vollständigen Namen geben lassen DWORD dwFlags = 0L; hr = Prop -> GetPropInfo (cbPropInfo, sizeof(cbPropInfo), &dwFlags); if (FAILED(hr) || dwFlags & PROPCAPS_INTERACTIVE) continue; // keine interaktive ObjProps anzeigen // ParentItem der Property aus dem Baum besorgen CPropertyName PropName (cbPropInfo); HTREEITEM hParent = CalcParentItem (PropName.GetGroup()); string rstr = PropName.GetSubGroup(); HTREEITEM hNewItem = NULL; if (0 != rstr.length()) { HTREEITEM hSubGroup = CalcSubGroupItem (hParent, rstr.c_str()); if (NULL != hSubGroup) hNewItem = InsertItem (PropName.GetName().c_str(), hSubGroup); else hNewItem = InsertItem (PropName.GetName().c_str(), hParent); } else hNewItem = InsertItem (PropName.GetName().c_str(), hParent); int iIndex = GetImageIndex (dwFlags); SetItemImage (hNewItem, iIndex, iIndex); } return true; }