void CAdhocLinkerDlg::UpdateList(void) { ADHOC_STATUS status; if(!m_Client.GetAdhocStatus(status)) { m_ClientList.DeleteAllItems(); m_DeviceList.DeleteAllItems(); return; } if(!memcmp(&m_AdhocStatus, &status, sizeof(m_AdhocStatus))) return; if(m_AdhocStatus.ClientInfoCount != status.ClientInfoCount || m_AdhocStatus.DeviceInfoCount != status.DeviceInfoCount) { ResetListItems(status); } else { UpdateListItems(status); } m_AdhocStatus = status; }
void CDlgReadInfo::OnSelectChanged(HTREEITEM hItem) { // Quit previous field editing. m_wndList.EndEdit(FALSE); // 清空属性列表 ResetListItems(); CString strCadLayerName, strSdeLayerName,strRowId; m_strCurObjectId = m_wndTree.GetItemText(hItem); ITEM_DATA xxItemData = mapItemData[m_strCurObjectId]; m_strCadlayerName = strCadLayerName = xxItemData.strCadLayerName; strSdeLayerName = xxItemData.strSdelayerName; strRowId = xxItemData.strRowId; STB_CONTENT_TREE xxContentTree = Glb_mapTree[strCadLayerName]; IDistConnection* pConnection = Glb_pConnection; if (Glb_bMultiConnection) { pConnection = xxContentTree.bIsLocalLayer ? Glb_pLocalConnection : Glb_pConnection; } if(NULL == pConnection) { acutPrintf("\n空间数据库没有连接!"); return; } IDistParameter* pParam = NULL; int nParamNum = 0; IDistCommand* pCommand = CreateSDECommandObjcet(); pCommand->SetConnectObj(pConnection); long nRet = pCommand->GetTableInfo(&pParam,&nParamNum,strSdeLayerName.GetBuffer(),"SDE"); strSdeLayerName.ReleaseBuffer(); if(1 != nRet) { pCommand->Release(); return; } CString strRowIdColumn = "OBJECTID"; CString strName; for(int i=0; i<nParamNum; i++) { if(pParam[i].fld_nType == kShape) continue; if(pParam[i].fld_nRowIdType == kRowIdColumnSde) { strRowIdColumn = pParam[i].fld_strName; continue; } strName = strName + pParam[i].fld_strName + ","; } if(strName.IsEmpty()) { pCommand->Release(); return; } char strSQL[1024]={0}; sprintf(strSQL,"F:%sT:%s,W:%s=%s",strName, strSdeLayerName, strRowIdColumn, strRowId); IDistRecordSet* pRcdSet = NULL; if(1 != pCommand->SelectData(strSQL,&pRcdSet,NULL)) { if(pRcdSet != NULL) { pRcdSet->Release(); } pCommand->Release(); return; } if(pRcdSet->BatchRead()==1) { for(int i=0; i<nParamNum; i++) { if(pParam[i].fld_nType == kShape) continue; if(pParam[i].fld_nRowIdType == kRowIdColumnSde) continue; COLUMN_VALUE xxParam; xxParam.strName = pParam[i].fld_strName; xxParam.strAlias = pParam[i].fld_strAliasName; pRcdSet->GetValueAsString(xxParam.strValue.GetBuffer(128), xxParam.strName); xxParam.strValue.ReleaseBuffer(); long nType = 0; switch(pParam[i].fld_nType) { case kInt16: case kInt32: nType = 1; break; case kFloat32: case kFloat64: nType = 2; break; case kDate: nType = 3; break; case kString: case kNString: case kBLOB: case kShape: break; default: break; } paramList.Add(xxParam); m_wndList.AddItem(nType, xxParam.strAlias, xxParam.strValue); /* if (IsFieldEditable()) { m_wndList.FreezeColumn(i); m_wndList.SetItemTextColor(i, 1, GetSysColor(COLOR_GRAYTEXT)); } else { m_wndList.UnfreezeColumn(i); } */ } } pRcdSet->Release(); pCommand->Release(); }
void CDlgReadInfo::OnBnClickedBtnSelect() { //交互选择实体 BeginEditorCommand(); CString strCadName; CComboBox* pCmb = (CComboBox*)GetDlgItem(IDC_COMBO_CADLY); pCmb->GetLBText(pCmb->GetCurSel(),strCadName); ads_name ssName; struct resbuf *filter=NULL; if(strCadName.CompareNoCase("所有图层") != 0) { filter=acutNewRb(AcDb::kDxfLayerName); filter->restype=AcDb::kDxfLayerName; filter->resval.rstring = (char*) malloc((strCadName.GetLength()+1)*sizeof(char)); strcpy(filter->resval.rstring,strCadName.GetBuffer(0)); filter->rbnext=NULL; } if (acedSSGet(":S", NULL, NULL, filter, ssName) != RTNORM) { acutPrintf("\n选择实体有误!"); acedSSFree(ssName); acutRelRb(filter); CompleteEditorCommand(); return; } if(filter != NULL) acutRelRb(filter); AcDbObjectId tempObjId; ads_name ssTemp; long nNum = 0; int nPos = 0; acedSSLength(ssName,&nNum); CString strSdeName,strId,strRowId; m_wndTree.DeleteAllItems(); // 清空属性列表 ResetListItems(); for(int i=0; i<nNum; i++) { acedSSName(ssName, i, ssTemp); if(Acad::eOk != acdbGetObjectId(tempObjId, ssTemp)) continue; strId.Format("%d",tempObjId.asOldId()); CDistXData tempXData(tempObjId,"ROWID_OBJS"); if(tempXData.Select("SDELYNAME",strSdeName)==FALSE) continue; if(tempXData.Select("OBJECTID",strRowId)==FALSE) continue; tempXData.Close(); HTREEITEM hItem = m_wndTree.InsertItem(strId); AcDbEntity *pEnt = NULL; if (Acad::eOk != acdbOpenObject(pEnt, tempObjId, AcDb::kForRead)) { return; } pEnt->close(); ITEM_DATA xxItemData; xxItemData.strID = strId; xxItemData.strSdelayerName = strSdeName; xxItemData.strCadLayerName = pEnt->layer(); xxItemData.strRowId = strRowId; mapItemData[strId] = xxItemData; nPos++; } acedSSFree(ssName); CompleteEditorCommand(); if (m_wndTree.GetCount() <= 0) { return; } HTREEITEM hItem = m_wndTree.GetFirstVisibleItem(); // 显示属性 OnSelectChanged(hItem); }