BOOL CGenerateObjectPropertiesSelectDlg::FInit (void) { // Liste der Objekteigenschaften initialisieren CEierUhr Wait (this); // EierUhr anzeigen WObjectProps ObjProps; BOOL fMustReInit = DEX_GetObjectProps (ObjProps.ppi()); if (ObjProps.IsValid()) { // evtl. alle ObjProps installieren if (fMustReInit) { ObjProps -> OnNewReferenceObject (-1L); // alles bisherige löschen if (FAILED(ObjProps -> OnNewReferenceObject (0L))) return FALSE; DEX_SetMustInitOPFs(FALSE); } } TX_TRY(m_pObjProps = new CSelObjPropTree (this, IDC_OBJECTPROPERTIES, ObjProps, IncludeAll, false, true, true)); if (NULL == m_pObjProps) return FALSE; return TRUE; }
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; }