BOOL CPrjMap::GetMatchMapName(DWORD lONr) { iterator it = find (DEX_GetObjectProject(lONr)); if (it == end()) return FALSE; return (*it).second.GetMatchMapName(); }
// -------------------------------------------------------------------------------------------- // neue Objekt(e) nach TRiAS speichern STDMETHODIMP CGeoEditExtension::StoreNewObject (IUnknown* pIOG, BSTR bsObjName) { _ASSERTE (pIOG != NULL); USES_CONVERSION; // legt _convert für OLE2A() an WObjektGeometrie wObj; try { wObj = pIOG; // mit implizitem QueryInterface } catch (_com_error& e) { return _COM_ERROR (e); } CEierUhr Wait (MVWind()); ulong ulIdent = (ulong)-1; wObj->GetIdent (&ulIdent); // Identifikator abfragen #if _TRiAS_VER < 0x0300 if (0 == DEX_GetROMode()) // Datenbank nicht schreibgeschützt (R/W-Modus) #else if (0 == DEX_GetROModeIdent (ulIdent)) // Objektklasse nicht schreibgeschützt #endif // _TRiAS_VER < 0x0300 // OGNewObject: permanentes Objekt in Datenbank aufnehmen // OGForceGeometry: auch außerhalb des aktuellen Projekt-Containers speichern // OGForceGeoError: Objekt wird bei Geometriefehler von GEOREIN abgewiesen // OGAskWhenError: im Fehlerfall wird Anwender vor dem Abspeichern noch einmal gefragt // OGAddToView: Identifikator zur Sicht hinzufügen wObj->SetFlags (OGNewObject | OGForceGeometry | OGForceGeoError | OGAskWhenError | OGAddToView); else // OGTempObject: temporäres Objekt wObj->SetFlags (OGTempObject); #if _TRiAS_VER < 0x0300 HRESULT hrRet = wObj->GeometrieAnTRiAS (true, NULL); #else INT_PTR hPr = reinterpret_cast<INT_PTR>(DEX_GetObjectsProject (ulIdent)); HRESULT hrRet = wObj->GeometrieAnTRiASEx (hPr, true, NULL); #endif // _TRiAS_VER < 0x0300 // wenn Objekt in DB eingespeichert wurde (hrRet == S_OK oder S_FALSE), dann auch // Objektname und UniqueIdent wegschreiben if (SUCCEEDED(hrRet)) { long lNeuON; // neue Objektnummer (von TRiAS bei Einspeicherung vergeben) wObj->GetONr (&lNeuON); // neue Objektnummer abfragen // Objektname eintragen WriteFeatureText (lNeuON, DEX_GetObjNameMCode(ulIdent), TT_Objekt, OLE2A(bsObjName)); // hr == S_OK bedeutet, daß Objekt fehlerfrei abgespeichert wurde; // hr == S_FALSE bedeutet, daß Objekt fehlerhaft abgespeichert wurde, in diesem Fall // wurde durch GeoRein.ext schon ein UniqueIdent vergeben if (S_OK == hrRet) // UniqueIdent ergänzen { string sUIText; ResString resText (ResID (IDS_UIFORMAT, pRF), 20); Format (sUIText, (char*)resText.Addr(), lNeuON); #if _TRiAS_VER < 0x0300 WriteFeatureText (lNeuON, DEX_GetUniqueIdentMCode(), TT_Objekt, sUIText); #else WriteFeatureText (lNeuON, DEX_GetUniqueIdentMCodeEx (DEX_GetObjectProject(lNeuON)), TT_Objekt, sUIText); #endif // _TRiAS_VER < 0x0300 } // Mitteilung, daß NeuEditierung beendet if (DEXN_ObjectCreated (lNeuON)) { // jemand hatte nun doch noch was dagegen DEX_DeleteObject(lNeuON); // wieder löschen return S_FALSE; } } return hrRet; } // StoreNewObject
BOOL CKartenCtrl::OnQueryParameters( CWnd *pParentWnd, const DWORD lONr, class VisInfo * pVI, LPCTSTR pszVisStr, LPSTR pBuffer, short iLen, short * piOTypes) { // KK010108 m_lMapONr = lONr; // long lIdent = DEX_GetObjIdent(lONr); // m_hPr = DEX_GetObjectsProject(lIdent); // aktuelle Datenquelle m_hPr = DEX_GetObjectProject(lONr); // aktuelle Datenquelle ULONG lCount = DEX_GetOpenConnectionCount(QDCAllOpen); if ( lCount != m_strDQ.Count()) { // strDQ + strKVZ aktualisieren !! SetDQ(); ModKVZ(); SetKVZCodes(); } CString S; CDlgPgColor pgColor; CDlgPgBW pgBWPict; CDlgPgVisparam pgVisparam; CDlgPgDirectories pgDirs; CImagePropertySheet dlg( IDS_DIALOG_TITLE, pParentWnd ); dlg.AddPage( &pgColor ); dlg.AddPage( &pgBWPict ); // dlg.AddPage( &pgVisparam ); dlg.AddPage( &pgDirs ); ::AfxExtractSubString( S, pVI->VisName(), 0, ';' ); pgColor.m_strMapPalette = S; ::AfxExtractSubString( S, pVI->VisName(), 1, ';' ); pgVisparam.m_strFromScale = "0" == S || S.IsEmpty() ? szShowEver : S; ::AfxExtractSubString( S, pVI->VisName(), 2, ';' ); pgVisparam.m_strToScale = "0" == S || S.IsEmpty() ? szShowEver : S; pgColor.m_strViewPalette = m_strViewPalette; pgColor.m_chkSingleMap = m_strViewPalette.IsEmpty() ? 0 : 1; pgColor.m_bTransparent = m_nTranspChannel ? TRUE : FALSE; // pgVisparam.m_bMapsVisible = m_bMapsVisible; //////////// // Listboxen werden in 'OnInitDialog' gefüllt DWORD w; for( POSITION pos = m_listOfPalTypes.GetStartPosition(); pos; ) { m_listOfPalTypes.GetNextAssoc( pos, S, (void*&) w ); ASSERT( w < N_PALETTETYPES ); pgColor.m_strPalettes.SetAtGrow( w, S ); } for( int i = 0; i < m_strMapDirs.GetSize(); i++ ) pgDirs.m_strMapDirs.Add( m_strMapDirs[i] ); pgBWPict.m_bTransparent = m_nTranspChannel ? TRUE : FALSE; pgBWPict.m_nChannel = m_nTranspChannel ? m_nTranspChannel - 1 : 0; if( IDOK == dlg.DoModal( ) ) { m_nTranspChannel = 0; if (1 == dlg.m_iLastActivePage && pgBWPict.m_bTransparent) m_nTranspChannel = pgBWPict.m_nChannel + 1; else if (0 == dlg.m_iLastActivePage && pgColor.m_bTransparent) m_nTranspChannel = 1; // m_strViewPalette = ( 0 == pgColor.m_chkSingleMap ) ? TEXT( "" ) : pgColor.m_strViewPalette; // S = m_strViewPalette.IsEmpty() ? g_szEmpty : m_strViewPalette; m_strViewPalette = pgColor.m_strViewPalette; CString strView; if( DEX_GetActiveSight(strView.GetBufferSetLength(_MAX_PATH))) { strView.ReleaseBuffer(-1); S.Format( "%s@%d;%ld", m_strViewPalette, m_nTranspChannel, 0L ); // #fje19991101 0L eingefügt // SetMCodeValue( strView, m_lPalMCode, S, S.GetLength() ); SetMCodeValue( strView, PalMCode(m_hPr), S, S.GetLength() ); } // m_bMapsVisible = pgVisparam.m_bMapsVisible; S.Format( _T("t=10,\"%s;0;0;\"; z=\"karten\":%%%ld;") , (LPCTSTR) pgColor.m_strMapPalette // , m_lMapMCode , MapMCode(m_hPr) ); if( iLen > S.GetLength() + 1 ) { strcpy( pBuffer, S ); } *piOTypes = (OTFlaeche); m_strMapDirs.RemoveAll(); // KK010108 // Aktualisieren Kartenverzeichnis CPrjMap strKVZ; CPrjMapOutputIter outer(&strKVZ); long *pRef = new long [100]; for( int i = 0; i < pgDirs.m_strMapDirs.GetSize(); i++ ) { S = pgDirs.m_strMapDirs[i]; if( '\\' != S.Right( 1 ) && '/' != S.Right( 1 ) ) S += '\\'; m_strMapDirs.Add( S ); if ( pgDirs.ChangeKVZList()) { // Dir geändert if ( FindMapList( pRef, (LPCTSTR) S)) { for ( long k = 0; k < *pRef; k++ ) { HPROJECT hPr = (HPROJECT) *(pRef+k+1); strKVZ.InsertKVObject(hPr,(LPCTSTR)S); } } else { strKVZ.InsertKVObject(m_hPr,(LPCTSTR)S); } } } DELETE_OBJ(pRef); m_strKVZ.Clear(); m_strKVZ = strKVZ; return TRUE; } return FALSE; }
bool operator() (LONG lONr) { return m_rDS.find(DEX_GetObjectProject(lONr)) == m_rDS.end(); }