コード例 #1
0
ファイル: ObjectAttDlg.cpp プロジェクト: coolbole/OGDC
BOOL CObjectAttDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	if(m_pRecordset != NULL)
	{		
		m_lstObject.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_INFOTIP|LVS_EX_FULLROWSELECT);
		LVCOLUMN lvColumn;
		lvColumn.mask = LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;
		lvColumn.fmt = LVCFMT_LEFT;
		
		CString strText = _T("");
		lvColumn.cx = 100;
		
		strText.LoadString(IDS_FIELD_NAME);
		OgdcString strTmp = (OgdcString)strText;
		lvColumn.pszText = (char*)strTmp.Cstr();
		
		m_lstObject.InsertColumn(0, &lvColumn);

		lvColumn.cx = 100;
		strText.LoadString(IDS_FIELD_VALUE);
		OgdcString strTmp2 = (OgdcString)strText;
		lvColumn.pszText = (char*)strTmp2.Cstr();
		m_lstObject.InsertColumn(1, &lvColumn);

		OgdcFieldInfos fieldInfos;
		m_pRecordset->GetFieldInfos(fieldInfos);
		for(int i=0;i<fieldInfos.GetSize();i++)
		{
			OgdcFieldInfo fieldInfo = fieldInfos.GetAt(i);
			OgdcString strName = fieldInfo.m_strForeignName;
			if(strName.IsEmpty())
			{
				strName = fieldInfo.m_strName;
			}
			m_lstObject.InsertItem(i, strName);
			m_lstObject.SetItemText(i, 0, fieldInfo.m_strName);
			OgdcVariant var;
			m_pRecordset->GetFieldValue(fieldInfo.m_strName, var);
			m_lstObject.SetItemText(i, 1, var.ToString());
		}
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
コード例 #2
0
ファイル: OpenDBDlg.cpp プロジェクト: coolbole/OGDC
void COpenDBDlg::OnOK() 
{	 
	UpdateData();	
	OgdcString strAlias = m_strAlias;
	if(strAlias.IsEmpty() ||
		(m_pDataSources != NULL && m_pDataSources->Lookup(strAlias) != NULL))
	{		
		AfxMessageBox(IDS_ALIAS_ISEXISTED);
		return;
	}
	OgdcInt n_Class = m_Provider.GetEngineClass();	
	if(n_Class == 2)
	{
		OgdcString strTmpServer = OgdcString(m_strServer);
		char cTmp = '\\';
		if (strTmpServer.Find(cTmp,0)==-1) 
		{
			AfxMessageBox("请输入正确的路径!");
		     return;
		}
	}
	CDialog::OnOK();
}
コード例 #3
0
ファイル: OgdcFeatureMdb.cpp プロジェクト: SuperMap/OGDC
OgdcBool OgdcFeatureMdb::GetValue( OgdcInt nIndex, OgdcVariant& varValue )
{

	OgdcByte* pByte = m_fieldValues.GetAt(nIndex);
	if (pByte == NULL)
	{
		varValue.Clear();
		return TRUE;
	}
	OgdcInt nSize = m_fieldDefines.ElementAt(nIndex).m_nSize;
	OgdcByte* pData /*= new OgdcByte[nSize]*/;
	pData = m_fieldValues.GetAt(nIndex);
	OgdcByte* pDataMirror = pData;

	switch (m_fieldDefines.GetAt(nIndex).m_nType)
	{
	case OgdcFieldInfo::Boolean:
	case OgdcFieldInfo::Byte:
		{
			OgdcByte* nValue = new OgdcByte[nSize];
			memcpy(nValue, pDataMirror, nSize);
			varValue = *nValue;
			nValue = NULL;
		}
		break;
	case OgdcFieldInfo::INT16:
		{
			OgdcShort* nValue = new OgdcShort;
			memcpy(nValue, pDataMirror, nSize);
			varValue = *nValue;
			delete nValue;
			nValue = NULL;
		}
		break;
	case OgdcFieldInfo::INT32:
		{
			OgdcInt* nValue = new OgdcInt;
			memcpy(nValue, pDataMirror, nSize);
			varValue = *nValue;
			delete nValue;
			nValue = NULL;
		}
		break;
	case OgdcFieldInfo::INT64:
		{
			OgdcLong* nValue = new OgdcLong;
			memcpy(nValue, pDataMirror, nSize);
			varValue = *nValue;
			delete nValue;
			nValue = NULL;
		}
		break;
	case OgdcFieldInfo::Double:
		{
			OgdcDouble* dValue = new OgdcDouble;
			memcpy(dValue, pDataMirror, nSize);
			varValue = *dValue;
			delete dValue;
			dValue = NULL;
		}
		break;
	case OgdcFieldInfo::Float:
		{
			OgdcFloat* dValue = new OgdcFloat;
			memcpy(dValue, pDataMirror, nSize);
			varValue = *dValue;
			delete dValue;
			dValue = NULL;
		}
		break;
	case OgdcFieldInfo::Text:
	case OgdcFieldInfo::Char:
	case OgdcFieldInfo::NText:
		{
			OgdcString strTemp = OgdcString((OgdcChar*)pByte);
			strTemp.SetCharset(GetCharset());
			varValue = strTemp;
		}
		break;
	case OgdcFieldInfo::Date:
	case OgdcFieldInfo::Time:
	case OgdcFieldInfo::TimeStamp:
		{
			OgdcDouble* dValue = new OgdcDouble[nSize];
			memcpy(dValue, pDataMirror, nSize);
			OgdcTime dateTime = *dValue;
			varValue = dateTime;
			dValue = NULL;
		}
		break;
	case OgdcFieldInfo::LongBinary:
		{
			OgdcByte* pValues = new OgdcByte[nSize];
			memcpy(pValues, pDataMirror, nSize);
			varValue.Clear();
			varValue.Set(pValues, nSize);
			pValues = NULL;
		}
		break;
	case OgdcFieldInfo::Geometry:
	default:
		{
			varValue.Clear();
			return FALSE;
		}
		break;
	}

	pData = NULL;
	pDataMirror = NULL;
	return TRUE;
}
コード例 #4
0
ファイル: OgdcFeatureMdb.cpp プロジェクト: SuperMap/OGDC
OgdcBool OgdcFeatureMdb::SetValue( OgdcInt nIndex, const OgdcVariant& varValue )
{
	if (nIndex >= m_fieldValues.GetSize())
	{
		return FALSE;
	}
			
	OgdcByte* pData = new OgdcByte[m_fieldDefines.ElementAt(nIndex).m_nSize];
	OgdcByte* pDataMirror = pData;
	switch (m_fieldDefines.ElementAt(nIndex).m_nType)
	{		
	case OgdcFieldInfo::Boolean:
	case OgdcFieldInfo::Byte:
		{
			OgdcByte nResult = (OgdcByte)varValue.ToInt();
			memcpy(pDataMirror, &nResult,sizeof(OgdcByte));
			break;
		}
	case OgdcFieldInfo::INT16:
		{
			OgdcShort nResult = (OgdcShort)varValue.ToInt();
			memcpy(pDataMirror, &nResult,sizeof(OgdcShort));
			break;
		}
	case OgdcFieldInfo::INT32:
		{
			OgdcInt nResult = varValue.ToInt();
			memcpy(pDataMirror, &nResult, sizeof(OgdcInt));
			break;
		}
	case OgdcFieldInfo::INT64:
		{
			OgdcLong nResult = varValue.ToLong();
			memcpy(pDataMirror, &nResult, sizeof(OgdcLong));
			break;
		}
	case OgdcFieldInfo::Float:
		{
			OgdcFloat fResult = (OgdcFloat)varValue.ToDouble();
			memcpy(pDataMirror, &fResult, sizeof(OgdcFloat));
			break;
		}
	case OgdcFieldInfo::Double:
		{
			OgdcDouble dResult = varValue.ToDouble();
			memcpy(pDataMirror, &dResult, sizeof(OgdcDouble));
			break;
		}
	case OgdcFieldInfo::Text:
	case OgdcFieldInfo::Char:
	case OgdcFieldInfo::NText:
		{
			OgdcString strTemp = varValue.ToString();
			strTemp.SetCharset(m_nCharset);
			OgdcInt nLength = strTemp.GetLength() + 1;
			OgdcInt nByteSize = nLength * sizeof(OgdcChar);
			OgdcByte* pByte1 = new OgdcByte[nByteSize];
			memset(pByte1, 0, nByteSize);
			strcpy((char*)pByte1, (char*)strTemp.Cstr());
			m_fieldValues.SetAt(nIndex, pByte1);
			delete pData;
			pData = NULL;
			pByte1 = NULL;
			return TRUE;
		}
	case OgdcFieldInfo::Date:
	case OgdcFieldInfo::Time:	
	case OgdcFieldInfo::TimeStamp:
		{
			if (varValue.GetType() == OgdcVariant::Time) 
			{	
				memcpy(pDataMirror, &varValue.GetValue().tmVal,sizeof(OgdcDouble));
			}			
			break;
		}
	case OgdcFieldInfo::LongBinary:
		{
			if (varValue.GetType() == OgdcVariant::Binary) 
			{	
				OgdcInt nLength = varValue.m_value.binVal.nSize;
				nLength = OGDCMIN(m_fieldDefines.ElementAt(nIndex).m_nSize, nLength);
			
				memcpy(pDataMirror, varValue.m_value.binVal.pVal, nLength);
				m_fieldValues.SetAt(nIndex, pData);
				delete pData;
				pData = NULL;
				return TRUE;
			}		
			break;
		} 
	case OgdcFieldInfo::Geometry:
	default:
		return FALSE;		
	}
	if (pData == NULL)
	{
		pData = new OgdcByte[m_fieldDefines.ElementAt(nIndex).m_nSize];
	}
	delete m_fieldValues.ElementAt(nIndex);
	m_fieldValues.SetAt(nIndex, pData);

	//!!这里不能删除,不然外面又没值
//	delete pData;
	pData = NULL;
	pDataMirror = NULL;
	return TRUE;
}
コード例 #5
0
ファイル: ViewerWnd.cpp プロジェクト: SuperMap/OGDC
void CViewerWnd::AddDataset(OgdcDataset* pDataset, OgdcStyle& style, OgdcString& strName, BOOL bClear)
{	
	if(pDataset == NULL)
	{
		return;
	}

	if(bClear)
	{
		m_nSelectID = -1;
		m_pSelectDataset = NULL;
		m_datasets.RemoveAll();
		m_styles.RemoveAll();
		m_names.RemoveAll();
	}
	else if(FindDataset(pDataset) != -1)
	{
		return;
	}

	if(pDataset->GetType() == OgdcDataset::Tabular ||
		strName.IsEmpty())
	{
		return;
	}

	m_datasets.Add(pDataset);	
	m_styles.Add(style);
	m_names.Add(strName);

	m_drawing.m_rcBounds = ComputeBounds();
    if(m_datasets.GetSize() == 1)
	{
		m_drawing.ViewEntire();
		if(!pDataset->IsRaster())
		{
			OgdcDatasetVector* pDatasetV = (OgdcDatasetVector*)pDataset;
			long nCount = pDatasetV->GetObjectCount();
			if(nCount > 1000000)		//! 百万以上
			{
				m_drawing.Zoom(100);
			}
			else if(nCount > 100000)	//! 十万以上
			{
				m_drawing.Zoom(32);
			}
			else if(nCount > 10000)		//! 一万以上
			{
				m_drawing.Zoom(8);
			}
			else if(nCount > 3000)		//! 三千以上
			{
				m_drawing.Zoom(2);
			}
		}
		else
		{
			OgdcDatasetRaster *pDatasetR = (OgdcDatasetRaster *)pDataset;
			double dWidth = m_drawing.m_rcBounds.Width();
			double dHeight = m_drawing.m_rcBounds.Height();
			LONG nWidth = pDatasetR->GetWidth();
			LONG nHeight = pDatasetR->GetHeight();

			if(nWidth!=0 && nHeight!=0)
			{
				double dResolutionX = dWidth / nWidth;
				double dResolutionY = dHeight / nHeight;
				if(dResolutionX > dResolutionY)
				{
					m_drawing.SetCoordRatio(dResolutionX);
				}
				else
				{
					m_drawing.SetCoordRatio(dResolutionY);
				}
			}
		}
	}
}