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 }
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(); }
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; }
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; }
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); } } } } }