Exemple #1
0
BOOL CPrjMap::GetMatchMapName(DWORD lONr)
{
    iterator it = find (DEX_GetObjectProject(lONr));

    if (it == end())
        return FALSE;

    return (*it).second.GetMatchMapName();
}
Exemple #2
0
// --------------------------------------------------------------------------------------------
// 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
Exemple #3
0
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;
}
Exemple #4
0
	bool operator() (LONG lONr) 
	{
		return m_rDS.find(DEX_GetObjectProject(lONr)) == m_rDS.end();
	}