qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
阅读:1476回复:3

各位帮我看看代码, 是怎么原因,老是出现VB6的严重错误,在线等 !!!!!!!!!!!!!!!!!!!!!1111

楼主#
更多 发布于:2005-08-18 15:42
下面是旋转的代码,<BR>每次运行到 MOUSE_DOWN 事件的 g_pRotTrack.OnMouseDown 语句时就会弹出VB6错误,系统就死掉了,程序就自动关了,<BR>你能不能帮我看看是那里的原因,<BR>谢谢<BR><BR>在MOUSE_DOWN <BR>Case OP_STATE_ROTATELINE<BR>Set pPoint = g_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)<BR>str = SelectMoveLine(pPoint, g_pFeatureSelect)<BR>If Not g_pFeatureSelect Is Nothing Then<BR>Set pFeatureClass = g_pEditFeatureLayer.FeatureClass<BR>Set inumIDs = g_pFeatureSelect.SelectionSet.IDs<BR>l = inumIDs.Next<BR>If l > 0 Then<BR>Set g_pFeature = pFeatureClass.GetFeature(l)<BR>If Not g_pFeature Is Nothing Then<BR>'判断是线类型<BR>If g_pFeature.Shape.GeometryType = 3 Then<BR>If g_pOperatorNum = 1 Then<BR>Set g_pRotPoint = pPoint<BR>SetRotTrack<BR>If Not g_pRotTrack Is Nothing Then<BR>g_pRotTrack.OnMouseDown<BR>End If<BR>g_pOperatorNum = 2<BR>End If<BR>End If<BR>End If<BR>End If<BR>End If<BR>在MOUSE_MOVE<BR>'旋转管线<BR>Case OP_STATE_ROTATELINE<BR>If (g_pOperatorNum = 2) And (Not g_pRotTrack Is Nothing) Then<BR>g_pRotTrack.OnMouseMove pPoint<BR>End If<BR>在MOUSE_UP<BR>Case OP_STATE_ROTATELINE<BR>If (g_pOperatorNum = 2) And (Not g_pRotTrack Is Nothing) Then<BR>Dim bChanged As Boolean<BR>'获得sde的工作空间<BR>Set pWorkspaceEdit = g_pConnection.m_pSdeWorkspace<BR>'开始编辑操作<BR>pWorkspaceEditStartEditing True<BR>pWorkspaceEdit.StartEditOperation<BR>bChanged = g_pRotTrack.OnMouseUp<BR>If Not bChanged Then Exit Sub<BR>UpdateSelFeatures "Rotate", g_pRotTrack.Origin, g_pRotTrack.Angle, 0, True, False, True<BR>g_pOperatorNum = 1<BR>DrawMap<BR>End If<BR>'设置旋转<BR>Public Function SetRotTrack() As Boolean<BR>Dim SelectedShape As esriGeometry.IGeometry<BR>Dim pEnumFeature As esriGeoDatabase.IEnumFeature<BR>Dim pFeature As esriGeoDatabase.IFeature<BR>Dim pCPt As IPoint<BR>Dim pPoint As IPoint<BR>Dim pMPoint As esriGeometry.IMultipoint<BR>Dim pCollpoint As esriGeometry.IPointCollection<BR>' If Not g_pRotTrack Is Nothing Then<BR>' g_pRotTrack.ClearGeometry<BR>' End If<BR>Set g_pRotTrack = New RotateTracker<BR>' Set pEnumFeature = g_pFeatureSelect<BR>Set pEnumFeature = g_pMap.FeatureSelection<BR>pEnumFeature.Reset<BR>Set pFeature = pEnumFeature.Next<BR>If pFeature Is Nothing Then Exit Function<BR>Set pMPoint = New Multipoint<BR>Set pCollpoint = pMPoint<BR>Do While Not pFeature Is Nothing<BR>Set SelectedShape = pFeature.Shape<BR>g_pRotTrack.AddGeometry SelectedShape<BR>Set pPoint = New Point<BR>pPoint.x = (pFeature.Shape.Envelope.xMax + pFeature.Shape.Envelope.xMin) / 2<BR>pPoint.y = (pFeature.Shape.Envelope.yMax + pFeature.Shape.Envelope.yMin) / 2<BR>pCollpoint.AddPoint pPoint<BR>Set pFeature = pEnumFeature.Next<BR>Loop<BR>Set pPoint = New Point<BR>pPoint.x = (pMPoint.Envelope.xMax + pMPoint.Envelope.xMin) / 2<BR>pPoint.y = (pMPoint.Envelope.yMax + pMPoint.Envelope.yMin) / 2<BR>Set pCPt = New Point<BR>Set pCPt = pPoint<BR>If (Not pCPt Is Nothing) And (Not pCPt.IsEmpty) Then<BR>g_pRotTrack.Origin = pCPt<BR>SetRotTrack = True<BR>End If<BR>End Function<BR>'====================================================<BR>'‖功能:完成移动、旋转等操作<BR>'‖参数:pUpdateType 操作类型<BR>'‖ pPnt 旋转或比例缩放到的某点<BR>'‖ deltaX 移动到的坐标值或缩放比例<BR>'‖ deltaY 移动到的坐标值或缩放比例<BR>'‖ pMustModiOld 是否必须备份原实体<BR>'‖ pMustCopyOld 是否复制原实体<BR>'‖ pStartEditing 是否在此过程内开始编辑操作<BR>'‖输出:更新结果<BR>'‖=================================================<BR>Public Function UpdateSelFeatures(pUpdateType As String, _<BR>pPnt As IPoint, _<BR>deltaX As Double, _<BR>deltaY As Double, _<BR>pMustModiOld As Boolean, _<BR>pMustCopyOld As Boolean, _<BR>pStartEditing As Boolean) As Boolean<BR>Dim pTrans As ITransform2D<BR>Dim pUpdateFeature As IFeature<BR>Dim pWorkspaceEdit As IWorkspaceEdit<BR>Set pWorkspaceEdit = g_pConnection.m_pSdeWorkspace<BR>If pStartEditing Then<BR>pWorkspaceEdit.StartEditing True<BR>pWorkspaceEdit.StartEditOperation<BR>If Not g_pFeature Is Nothing Then<BR>Set pTrans = g_pFeature.ShapeCopy<BR>End If<BR>Select Case pUpdateType<BR>Case "Rotate"<BR>pTrans.Rotate pPnt, deltaX<BR>End Select<BR>If pMustModiOld Then<BR>Set pUpdateFeature.Shape = pTrans<BR>pUpdateFeature.Store<BR>End If<BR>pWorkspaceEdit.StopEditOperation<BR>pWorkspaceEdit.StopEditing True<BR>g_pMap.ClearSelection<BR>g_pMap.SelectFeature g_pEditFeatureLayer, pUpdateFeature<BR>End If<BR><BR>End Function<BR>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-08-18 16:15
<P>错误很难说,有时候和机器配置有关,换台机器try?下面是个vba的例子</P>
<P>  Private Sub UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long)</P>
<P> 'Create a rotateTracker coclass and assign properties<BR>  <BR>  Set rotateTracker = New rotateTracker<BR>  Set rotateTracker.Display = screenDisplay<BR>  <BR>  rotateTracker.Origin = folcrumPoint<BR>  rotateTracker.ClearGeometry<BR>  rotateTracker.AddGeometry thePolyline<BR>  <BR>  If Not rotateTracker Is Nothing Then<BR>    rotateTracker.OnMouseDown<BR>  End If<BR>End Sub</P>
<P>Private Sub UIToolControl2_MouseMove(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long)<BR> If Not button = 1 Then Exit Sub<BR> <BR>  Set mxDoc = Application.Document<BR>  Set pMap = mxDoc.FocusMap<BR>  Set activeView = mxDoc.FocusMap<BR>  Set screenDisplay = activeView.screenDisplay<BR>  <BR>  Dim pPoint As IPoint<BR>    <BR>  Set pPoint = screenDisplay.DisplayTransformation.ToMapPoint(x, y)</P>
<P>  If Not rotateTracker Is Nothing Then<BR>    rotateTracker.OnMouseMove pPoint<BR>  End If<BR>End Sub</P>
<P><BR>Private Sub UIToolControl2_MouseUp(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long)<BR>  Set mxDoc = Application.Document<BR>  <BR>  If rotateTracker.OnMouseUp = True Then<BR>    Dim trans2D As ITransform2D<BR>    Set trans2D = thePolyline<BR>    MsgBox rotateTracker.Angle<BR>    trans2D.Rotate rotateTracker.Origin, rotateTracker.Angle<BR>    mxDoc.activeView.Refresh<BR>  End If<BR>End Sub</P>
举报 回复(0) 喜欢(0)     评分
qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
2楼#
发布于:2005-08-18 16:54
<P>谢谢帮主,我换了电脑还是这样,我是用AO+VB做独立开发,</P>
<P>不明白我那是怎么回事,</P>
<P>以前碰到这个错误,是因为我的对象为空,我跟踪了一天,每个对象的值都查看过, </P>
举报 回复(0) 喜欢(0)     评分
lvtao_gis_guy
路人甲
路人甲
  • 注册日期2005-08-12
  • 发帖数7
  • QQ
  • 铜币115枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-08-19 12:18
<P>我也有这个问题,做专题图时,一调用Refresh就出错关闭,希望哪位大侠能帮我看看。</P>
<P><a href="http://www.gisempire.com/bbs/dispbbs.asp?boardID=62;ID=44908;page=1" target="_blank" >http://www.gisempire.com/bbs/dispbbs.asp?boardID=62;ID=44908;page=1</A></P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部