コード例 #1
0
ファイル: ObjectPropertyDual.cpp プロジェクト: hkaiser/TRiAS
STDMETHODIMP COleObjectPropertyDual::SearchObjects(BSTR bstrToMatch, 
	SEARCHMODE rgFlags, IEnumObjectsByNumber **ppvObj)
{
	if (NULL == ppvObj)
		return E_POINTER;
	*ppvObj = NULL;

	_ASSERTE(m_fSearchAble);	// muß suchen können
	
	COM_TRY {
	WDSearchAbleObjectProperty Search(m_ObjProp);
	WDGeoObjects Objs;

		THROW_FAILED_HRESULT(Search -> SearchObjects(bstrToMatch, 
			GetSearchMode(rgFlags), Objs.ppi()));

	WQueryEnumLONG QueryEnum(Objs);
	WEnumLONG Enum;

		THROW_FAILED_HRESULT(QueryEnum -> QueryEnumLONG (Enum.ppi()));

	WEnumObjectsByNumber EnumObjs(Enum);

		*ppvObj = EnumObjs.detach();

	} COM_CATCH;
	return S_OK;
}
コード例 #2
0
ファイル: PropActSeq.cpp プロジェクト: hkaiser/TRiAS
// ----------------------------------------------------------------------------
// PropertySequence_cmd_RedoActions
// ----------------------------------------------------------------------------
void PropertySequence_cmd_RedoActions (ebHTHREAD hThread, int iNumArgs, ebARGS lpArgs)
{
	BASIC_OP_TRACE(PropertySequence_cmd_RedoActions);

WPropertyActionSequence Seq ((IPropertyActionSequence *)ebGetObject (lpArgs, 1));
WDataObject InData;
_DGeoObjects *pIObjs = iNumArgs > 1 ? (_DGeoObjects *)ebGetObject (lpArgs, 2) : NULL;
HRESULT hr = NOERROR;

	if (NULL != pIObjs) {
	WEnumLONG EnumObjs;

		hr = GetEnumLongFromGeoObjects (pIObjs, EnumObjs.ppi());
		if (SUCCEEDED(hr)) {
			hr = CoCreateInstance (CLSID_DataTransferObject, NULL, CLSCTX_INPROC_SERVER, 
								   IID_IDataObject, InData.ppv());
			if (SUCCEEDED(hr))
				hr = SetEnumLONGData (EnumObjs, InData);
			else
				InData.Assign (NULL);		// freigeben
		}
		pIObjs = NULL;		// wird nicht mehr benötigt
	}

	Seq -> RedoActions (__hWndM, NULL, InData, NULL);
}
コード例 #3
0
ファイル: GeoEditInterface.cpp プロジェクト: hkaiser/TRiAS
// --------------------------------------------------------------------------------------------
// Ermittlung des Startindex lStartInd aus einer (evtl.) gemeinsamen Strecke mit einem schon
// rechtwinklig gemachten Objekt, das aus zur gleichen Objektklasse wie das lONr-Objekt gehört;
// gibt es kein solches Objekt, dann ist der return-Wert "S_FALSE", lStartInd ist in
// diesem Fall unbestimmt
HRESULT CGeoEditExtension::CommonLineWithRectObject (long lONr, KoOrd* plXK, KoOrd* plYK,
													 long lCnt0, long& lStartInd)
{
KoOrd x0, y0, x1, y1;	// Anfangs- und Endkoordinaten des längsten Konturabschnitts

	try	{
	// Objektnummern aller Objekte der Objektklasse des lONr-Objektes bereitstellen
	WEnumLONG wEnumIn (CLSID_EnumObjectsByNumber);	// throws_com_error
	ENUMLONGKEY ELK;

		ELK.eKey = DEX_GetObjIdentEx (lONr);
		ELK.eFcn = (ENUMLONGKEYPROC) GetRectObjects;
		ELK.ePtr = wEnumIn;
		DEX_EnumIdentObjects (ELK);

		if (0 == wEnumIn->Count())	// kein Objekt gefunden, das schon rechtwinklig gemacht
			return S_FALSE;			// wurde

	ulong ulIdent = 0;				// Identifikator für die Ergebnisobjekte (wird hier nicht
									// weiter benötigt)
	DWORD dwLageAusw = LAUSS;			// nur die wEnumIn-Flächen für Vergleich heranziehen, die
									// außerhalb der lONr-Fläche liegen
	SpForm sfSForm = SFORM_TEMP;	// temporäre Abspeicherung 
	WEnumLONG wComCont (CLSID_EnumObjectsByNumber);	// Objektnummern der gemeinsamen
													// Konturabschnitte

		if (! m_wObjOper.IsValid())	// (wenn noch nicht, dann) IExtendObjOper-Interface für
		{							//  CommonContour_ONr() zuschalten
		WUnknown wObjOper;

			ObjOperInterface (wObjOper.ppi());
			m_wObjOper = wObjOper;
		}

		if (m_wObjOper.IsValid())
			m_wObjOper->CommonContour_ONr (lONr, ulIdent, wEnumIn, dwLageAusw, sfSForm,
										   wComCont.ppi());
		else
			_ASSERTE (false);

		if (0 == wComCont->Count())	// keines der schon rechtwinklig gemachten Objekte hat
			return S_FALSE;			// einen gemeinsamen Konturabschnitt mit dem lONr-Objekt

		// wenn es mindestens 1 gemeinsamen Konturabschnitt gibt, dann die längste Strecke
		// bestimmen
		THROW_FAILED_HRESULT (GiveLongestLine (wComCont, x0, y0, x1, y1));
		VisualCommonContour (wComCont);
	}
	catch (_com_error& e)
	{
		return _COM_ERROR (e);
	}

	return StartIndex (plXK, plYK, lCnt0, x0, y0, x1, y1, lStartInd);

} // CommonLineWithRectObject
コード例 #4
0
ファイル: RegOperatPropAct.cpp プロジェクト: hkaiser/TRiAS
// --------------------------------------------------------------------------------------------
STDMETHODIMP CRegOperatPropAct::EndAction (DWORD, IDataObject** ppDataOut)
{
	_ASSERTE (m_ObjsIter != m_InObjs.end());

	*ppDataOut = 0;
	try {
	WEnumLONG wEnumInObj (*m_ObjsIter);	// die zu bearbeitenden Objekte
	WEnumLONG wEnumOutObj;				// Ergebnisobjekte der ausgewählten Operation

	// Optionen abfragen
	DWORD dwOptions = 0x00;

		if (SUCCEEDED(EnsureOptionsIF())) {
			_ASSERTE(m_wOperOptions.IsValid());
			m_wOperOptions->GetOptions (&dwOptions);
		}

		// im Dialog ausgewählte Operation ausführen
		THROW_FAILED_HRESULT (m_pRegOperDlg->ExecuteOperation (m_hPr, wEnumInObj, dwOptions,
															   wEnumOutObj.ppi()));
		m_ObjsIter++;

		if (wEnumOutObj.IsValid())
		{
		// IDataObject abfragen
		WDataObject IDO (CLSID_DataTransferObject);

		// Ergebnisobjekte im DataObjekt IDO speichern
			THROW_FAILED_HRESULT (SetEnumLONGData (
				(IEnum<LONG>*)(IEnumLONG*)wEnumOutObj, IDO));

		// Resultat setzen
			*ppDataOut = IDO.detach();
			if (0 == wEnumOutObj->Count()) {
			ResString resTitel (ResID (IDS_LONGCLASSNAME, pRF), 50);
			ResString resText (ResID (IDS_BOXTEXT1, pRF), 200);
	
				MessageBox (__hWndM, resText.Addr(), resTitel.Addr(),
							MB_ICONINFORMATION | MB_OK);
			}
		}
	}
	catch (_com_error& hr_result)		// 23.09.99
	{
		DELETE_OBJ (m_pRegOperDlg);		// bei Fehler Dialog wieder freigeben
		return _COM_ERROR(hr_result);	// 23.09.99
	}

	if (m_ObjsIter != m_InObjs.end())	// es kommen noch weitere Daten
		return S_FALSE;

	DELETE_OBJ (m_pRegOperDlg);			// es kommen keine Daten mehr
	return S_OK;

} // EndAction
コード例 #5
0
ファイル: RegOperatPropAct.cpp プロジェクト: hkaiser/TRiAS
// --------------------------------------------------------------------------------------------
STDMETHODIMP CRegOperatPropAct::DoAction (IDataObject* pDataObj, DWORD)
{
WEnumLONG wEnumObj;
HRESULT hr = GetEnumLONGData (pDataObj, (IEnum<LONG>**)(IEnumLONG**)wEnumObj.ppi());

	if (FAILED(hr)) return hr;

	// Enumerator (an PropertyPage übergebene Objekte) in Liste speichern
	m_InObjs.push_back (wEnumObj);		// Enumerator am Ende der Liste anfügen
	if (1 == m_InObjs.size())
		m_ObjsIter = m_InObjs.begin();	// Iterator zeigt auf das 1. Element der Liste

	return hr;

} // DoAction
コード例 #6
0
ファイル: GeoEditInterface.cpp プロジェクト: hkaiser/TRiAS
// --------------------------------------------------------------------------------------------
// Ermittlung des Startindex lStartInd aus einer (evtl.) gemeinsamen Strecke mit einem
// pEnumIn-Objekt; gibt es kein solches Objekt, dann ist der return-Wert "S_FALSE", lStartInd
// ist in diesem Fall unbestimmt
HRESULT CGeoEditExtension::CommonLine (long lONr, KoOrd* plXK, KoOrd* plYK, long lCnt0,
									   IEnumLONG* pEnumIn, long& lStartInd)
{
	if (NULL == pEnumIn) return S_FALSE;

KoOrd x0, y0, x1, y1;	// Anfangs- und Endkoordinaten des längsten Konturabschnitts

	try
	{
	ulong ulIdent = 0;				// Identifikator für die Ergebnisobjekte (wird hier nicht
									// weiter benötigt)
	DWORD dwLageAusw = LINAU;		// nur die pEnumIn-Flächen für Vergleich heranziehen, die
									// sowohl innerhalb als auch außerhalb der lONr-Fläche
									// liegen
	SpForm sfSForm = SFORM_TEMP;	// temporäre Abspeicherung 
	WEnumLONG wComCont (CLSID_EnumObjectsByNumber);	// Objektnummern der gemeinsamen
													// Konturabschnitte

		if (! m_wObjOper.IsValid())	// (wenn noch nicht, dann) IExtendObjOper-Interface für
		{							//  CommonContour_ONr() zuschalten
		WUnknown wObjOper;

			ObjOperInterface (wObjOper.ppi());
			m_wObjOper = wObjOper;
		}

		if (m_wObjOper.IsValid())
			m_wObjOper->CommonContour_ONr (lONr, ulIdent, pEnumIn, dwLageAusw, sfSForm,
										   wComCont.ppi());
		else
			_ASSERTE (false);

		if (0 == wComCont->Count())	// keines der pEnumIn-Objekt hat einen gemeinsamen
			return S_FALSE;			// Konturabschnitt mit dem lONr-Objekt

		// wenn es mindestens 1 gemeinsamen Konturabschnitt gibt, dann die längste Strecke
		// bestimmen
		THROW_FAILED_HRESULT (GiveLongestLine (wComCont, x0, y0, x1, y1));
		VisualCommonContour (wComCont);
	}
	catch (_com_error& e)
	{
		return _COM_ERROR (e);
	}

	return StartIndex (plXK, plYK, lCnt0, x0, y0, x1, y1, lStartInd);

}  // CommonLine
コード例 #7
0
STDMETHODIMP CTextSearchEngine::DoAction (IDataObject *pIDataObj, DWORD)
{
	if (NULL == m_pCfgDlg) return E_UNEXPECTED;

WEnumLONG EnumObj;
HRESULT hr = GetEnumLONGData (pIDataObj, EnumObj.ppi());

	if (S_OK == hr) 
	{
		// JG 980916 für ProgInd vorbereiten
		m_pCfgDlg -> SetAction(this);

		hr = m_pCfgDlg -> SetEnumLONG (EnumObj);
	}
	return hr;
}
コード例 #8
0
ファイル: GeoEdit.cpp プロジェクト: hkaiser/TRiAS
// --------------------------------------------------------------------------------------------
// Fügt extern bereitgestellte Objekte zu den ausgewählten Objekten hinzu
STDMETHODIMP CGeoEditExtension::AddObjects (IDispatch* pIDisp)
{
	try
	{
	WQueryEnumLONG QE (pIDisp);
	WEnumLONG Enum;

		THROW_FAILED_HRESULT(QE->QueryEnumLONG (Enum.ppi()));

		return m_wTopObjs->InitWithExternalObjects (WEnumObjectsByNumber(Enum));
	}
	catch (_com_error& e)
	{
		return _COM_ERROR (e);
	}

} // AddObjects
コード例 #9
0
ファイル: CodeLine.cpp プロジェクト: hkaiser/TRiAS
STDMETHODIMP CCodeLine::DoAction (IDataObject *pIDataObj, DWORD dwReserved)
{

	m_iErrorCode = m_pCfgDlg->GetErrorCode();


// Eingabeobjekte einfach mit zu unserer Objektmenge hinzufügen
	COM_TRY {
	WEnumLONG EnumObjs;
	OutEnumLONG iter_out_if (&m_Objects);

		THROW_FAILED_HRESULT(PropActBase::GetEnumObjects (pIDataObj, __uuidof(IEnumLONG), EnumObjs.ppv()));
		copy (InEnumLONG(EnumObjs), InEnumLONG(), iter_out_if);

	} COM_CATCH;
	return S_OK;
}
コード例 #10
0
ファイル: AreaBuildPropAct.cpp プロジェクト: hkaiser/TRiAS
// --------------------------------------------------------------------------------------------
STDMETHODIMP CAreaBuildPropAct::EndAction (DWORD, IDataObject** ppDataOut)
{
	_ASSERTE (m_ObjsIter != m_InObjs.end());

	*ppDataOut = 0;

	COM_TRY {
	WEnumLONG wEnumInObj (*m_ObjsIter);	// die zu bearbeitenden Objekte
	WEnumLONG wEnumOutObj;				// Ergebnisobjekte der ausgewählten Operation

	// Optionen abfragen
	DWORD dwOptions = 0x00;

		if (m_wOperOptions.IsValid())
			m_wOperOptions->GetOptions (&dwOptions);

		// im Dialog ausgewählte Operation ausführen
		THROW_FAILED_HRESULT (m_pAreaBuildDlg->ExecuteOperation (m_hPr, wEnumInObj, dwOptions,
																 wEnumOutObj.ppi()));

		m_ObjsIter++;

		if (wEnumOutObj.IsValid()) {
		// IDataObject abfragen
		WDataObject IDO (CLSID_DataTransferObject);

		// Ergebnisobjekte im DataObjekt IDO speichern
			THROW_FAILED_HRESULT (SetEnumLONGData ((IEnum<LONG>*)(IEnumLONG*)wEnumOutObj,
												   IDO));
		// Resultat setzen
			*ppDataOut = IDO.detach();

			if (0 == wEnumOutObj->Count()) {
			ResString resTitel (ResID (IDS_LONGCLASSNAME, pRF), 50);
			ResString resText (ResID (IDS_BOXTEXT7, pRF), 200);
	
				MessageBox (__hWndM, resText.Addr(), resTitel.Addr(),
							MB_ICONINFORMATION | MB_OK);
			}
		}
	}
	COM_CATCH_OP(
		delete m_pAreaBuildDlg;	// bei Fehler Dialog wieder freigeben
    );
コード例 #11
0
STDMETHODIMP CSelectExportObjects::DoAction (IDataObject *pIDataObj, DWORD dwReserved)
{
// Eingabeobjekte einfach mit zu unserer Objektmenge hinzufügen
	if (NULL != pIDataObj) {
	// evtl. keine Eingabeobjektmenge gegeben

		COM_TRY {
		// aber nur Objekte der geforderten Datenquellen übernehmen
		WEnumLONG EnumObjs;
		OutEnumLONG iter_out (&m_Objects);

			if (S_OK == GetEnumLONGData (pIDataObj, __uuidof(IEnumLONG), EnumObjs.ppv()))
			{
				remove_copy_if (InEnumLONG(EnumObjs), InEnumLONG(), iter_out, 
					CObjectToCopy(m_setDataSources));
			}

		} COM_CATCH;
	}
コード例 #12
0
ファイル: PropActSeq.cpp プロジェクト: hkaiser/TRiAS
// ----------------------------------------------------------------------------
// PropertySequence_func_RedoActions
// ----------------------------------------------------------------------------
void PropertySequence_func_RedoActions (ebHTHREAD hThread, int iNumArgs, ebARGS lpArgs)
{
	BASIC_OP_TRACE(PropertySequence_func_RedoActions);

	ebSetObject (lpArgs, 0, (DWORD)NULL);

WPropertyActionSequence Seq ((IPropertyActionSequence *)ebGetObject (lpArgs, 1));
WDataObject InData, OutData;
_DGeoObjects *pIObjs = iNumArgs > 1 ? (_DGeoObjects *)ebGetObject (lpArgs, 2) : NULL;
HRESULT hr = NOERROR;

	if (NULL != pIObjs) {
	WEnumLONG EnumObjs;

		hr = GetEnumLongFromGeoObjects (pIObjs, EnumObjs.ppi());
		if (SUCCEEDED(hr)) {
			hr = CoCreateInstance (CLSID_DataTransferObject, NULL, CLSCTX_INPROC_SERVER, 
								   IID_IDataObject, InData.ppv());
			if (SUCCEEDED(hr))
				hr = SetEnumLONGData (EnumObjs, InData);
			else
				InData.Assign (NULL);		// freigeben
		}
		pIObjs = NULL;		// wird nicht mehr benötigt
	}

	hr = Seq -> RedoActions (__hWndM, NULL, InData, OutData.ppi());
	if (SUCCEEDED(hr)) {
	WEnumLONG EnumObjs;

		if (NULL != (IUnknown *)OutData)
			hr = GetEnumLONGData (OutData, EnumObjs.ppi());
		if (SUCCEEDED(hr))		// jetzt Collection der GeoObjects generieren
			hr = GetGeoObjectsFromEnumlong (EnumObjs, &pIObjs);
	}

	if (SUCCEEDED(hr))
		ebSetObject (lpArgs, 0, (DWORD)pIObjs);
}
コード例 #13
0
STDMETHODIMP CTextSearchEngine::EndAction (DWORD, IDataObject **ppDataObj)
{
	if (NULL == m_pCfgDlg) return E_UNEXPECTED;
	if (NULL == ppDataObj) return E_POINTER;

	*ppDataObj = NULL;
	COM_TRY {
	// DataObject generieren und mit EnumObj füllen
	WEnumLONG EnumObj;
	
		THROW_FAILED_HRESULT(m_pCfgDlg -> GetEnumLONG (EnumObj.ppi()));

	WDataObject IDO (CLSID_DataTransferObject);
	
		THROW_FAILED_HRESULT(SetEnumLONGData (EnumObj, IDO));
		*ppDataObj = IDO.detach();

	} COM_CATCH_OP((delete m_pCfgDlg, m_pCfgDlg = NULL));

// rechercvhe liefert immer nur eine Objektmenge
	DELETE_OBJ(m_pCfgDlg);		// Dialog wird nicht mehr gebraucht
	return S_OK;
}
コード例 #14
0
ファイル: ASCPARSC.CPP プロジェクト: hkaiser/TRiAS
// Object bearbeiten ----------------------------------------------------------
int end_previous_object (void) 
{
long irc = 0L;

	lgi++;		/* Geometriezaehler korrigieren */
	if (lgi < koord_paare)
		return (db_error (EGCNT, ASCPARSER, yylineno));

// bevor irgend etwas passiert Header neu einlesen
	if (g_fReReadHeader) {
		DEXN_ReReadHeader();
		DEXN_ReScale();
		g_fReReadHeader = false;		// nur einmal
	}

// auswerten ob Komplexobjekt 
	if (lgi == 0) {
		if (RelCount() == 0)
			return db_error (EBADKO, ASCPARSER, yylineno);
		if (!r_flag)
			return EOKAY;	// keine Relationen, keine KomplexObjekte
		sta[0] = K_OBJEKT;	// Status setzen
		sta[1] = 0;		
	}

HPROJECT hPr = DEX_GetDataSourceHandle();

	_ASSERTE(NULL != hPr);
	irc = CreateObject (on, id, sta, mi, lgi, gxi, gyi);
	if (g_flag) {

	// evtl. ObjectGuid setzen
		if (irc && '\0' != guid[0]) {
		OBJECTGUID OUID;

			INITSTRUCT (OUID, OBJECTGUID);
			OUID.lONr = on;
			if (SUCCEEDED(CLSIDFromString (WideString(guid), &OUID.guid))) {
			// versuchen über GUID zu finden
				if (FAILED(DEX_FindObjectFromGuidEx (hPr, OUID))) {
				// alten Guid wieder setzen
				HRESULT hr = DEX_SetObjectGuid (OUID);

//					if (FAILED(hr) && HRESULT_FROM_ERRCODE(S_DUPLICATE) == hr) {
//						TX_ASSERT(0 != OUID.lONr);		// Objekt muß existieren
//
//					// GUID bereits in GeoDB vorhanden !!??
//						irc = S_DUPLICATE;
//
//					// neu erzeugtes Objekt löschen
//						DEX_DeleteObject (on);
//						CountObjects (sta[1], false);
//
//					// Geometrie an existierendem Objekt korrigieren
//						on = OUID.lONr;					// hier spielt die Musik
//						irc = CreateObject (on, id, sta, mi, lgi, gxi, gyi);
//					}
				}
			}
		}
	} else
		irc = UpdateFeatures (hPr, on, id, sta, mi);

// evtl. zur AusgabeObjektmenge hinzufügen
	if (irc && g_Enum.IsValid())
		g_Enum -> AddItem (on);

// Protocoll, Relationen etc.
bool fBreak = false;

	if (NULL != g_pDlg) {
		if (irc) 
			g_pDlg -> SetPos (ftell (yyin), on);
		fBreak = g_pDlg -> Break();
	}

	if (fpProt) fprintf (fpProt, "Satz %5ld, Objekt %5ld: Irc = %3ld\n", satz_nr, on, irc);

	if (irc && r_flag) {
		if (RelCount()) {
		// Relationen aufbauen
		long lONr, lRCode;
		short iRTyp;

			ResetList();
			while (RetrieveNextFromList (&lONr, &lRCode, &iRTyp)) 
				CreateRelation (on, lONr, lRCode, iRTyp);
			ClearList();
		}

	// Zuordnung Objekt <--> SatzNummer für Relationen merken
		StoreInTree (on, satz_nr);
	}

return fBreak;
}
コード例 #15
0
ファイル: ASCIMPIF.CPP プロジェクト: hkaiser/TRiAS
STDMETHODIMP CImpAscExtension::ImportDataWithResult (
	IEnumString *pEnumFiles, DWORD dwFlags, 
	IProgressIndicator *pIStatus, IEnumLONG **ppIObjs)
{
LPWSTR pFile = NULL;
ULONG ulGot = 0;
HRESULT hr = ResultFromScode (E_FAIL);

// ImportModi setzen
	r_flag = (dwFlags & TOIMPORT_RELATIONS) ? true : false;
	g_flag = (dwFlags & TOIMPORT_GEOMETRY) ? true : false;
	m_flag = (dwFlags & TOIMPORT_FEATURES) ? true : false;

// ZählerVariablen initialisieren
	g_lPoints = 0;
	g_lLines = 0;
	g_lAreas = 0;
	g_lTexts = 0;
	g_lKomplex = 0;

	g_lWithErrors = 0;
	g_lNotImported = 0;

	g_fReReadHeader = false;

// eigentlichen Import durchführen
	if (NULL != ppIObjs) {
		try { g_Enum = WEnumLONG (CLSID_EnumObjectsByNumber); } catch (...) {}
	}			

	USES_CONVERSION;
	if (NULL == pIStatus) {
	CStatusDlg SDlg (g_pTE -> MWind());	// StatusDialog
	bool fShown = false;

		g_pDlg = &SDlg;
		g_lFullTime = 0L;		// GesamtZeit

		pEnumFiles -> Reset();
		while (S_OK == pEnumFiles -> Next (1, (LPOLESTR *)&pFile, &ulGot)) {
		// alle Dateien nacheinander abarbeiten
			if (!fShown) {
				SDlg.Show();
				fShown = true;
			}
			hr = ImportASC (OLE2A(pFile));
			CoTaskMemFree (pFile);
			if (FAILED(hr))	break;
		}
		g_pDlg = NULL;

	} else {
		g_pDlg = NULL;
		g_lFullTime = 0L;		// GesamtZeit

		pEnumFiles -> Reset();
		while (S_OK == pEnumFiles -> Next (1, (LPOLESTR *)&pFile, &ulGot)) {
		// alle Dateien nacheinander abarbeiten
			hr = ImportASC (OLE2A(pFile));
			CoTaskMemFree (pFile);
			if (FAILED(hr))	break;
		}
	}

// evtl. Enumerator liefern
	if (NULL != ppIObjs)
		*ppIObjs = (IEnumLONG *)g_Enum.detach();

// Abschlußdialog nach jedem File - Übergangslösung
// Neues Interface in allen Import-Funktionen nachziehen und Objekt(g_Enum) auswerten
// -> neue Schnittstelle : ImportDataWithResult

	/*if (NULL == ppIObjs) */
	{
		DEX_PostRebuildSight();		// alles neu zeichnen

	// ResultatsDialog anzeigen
	
	CResultDlg RDlg (g_pTE -> MWind());

		RDlg.SetTexts (g_lTexts);
		RDlg.SetLines (g_lLines);
		RDlg.SetAreas (g_lAreas);
		RDlg.SetPoints (g_lPoints);
		RDlg.SetKomplex (g_lKomplex);
		RDlg.SetWithErrors (g_lWithErrors);
		RDlg.SetNotImported (g_lNotImported);
		RDlg.SetImported (g_lPoints + g_lLines + g_lAreas + g_lTexts + g_lKomplex);
		SetTime (g_lFullTime, RDlg.m_ftTime);

		MessageBeep (MB_ICONASTERISK);		// fertig !!
		RDlg.Show (Centre);
	}
	return hr;
}