阅读:1205回复:0
求助:一段VB代码直译成VC的几个问题
<P>翻译存在几个问题,其实是编程方面的问题,自己这块比较薄弱,高手帮我看看: </P>
<P> Dim recsLayer As MapObjects2.Recordset Dim fldShapeLayer As MapObjects2.Field Dim recsCrossingLines As MapObjects2.Recordset Dim fldShapeCrossingLines As MapObjects2.Field Dim lnEach As MapObjects2.Line Dim lnCross As MapObjects2.Line Dim rectExtent As MapObjects2.Rectangle Dim i As Integer, j As Long Dim ptsCross As MapObjects2.Points Dim ptsTemp As MapObjects2.Points Dim p_mapControl As MapObjects2.map</P> <P> Set rectExtent = p_mapControl .Extent Set recsLayer = pMapLayer.SearchShape(rectExtent, moAreaIntersect, "") Set fldShapeLayer = recsLayer.Fields("Shape") Set ptsCross = New MapObjects2.Points</P> <P> Do Until recsLayer.EOF Set lnEach = fldShapeLayer.Value // Set recsCrossingLines = pMapLayer.SearchShape(lnEach, moLineCross, "") Set fldShapeCrossingLines = recsCrossingLines.Fields("Shape") Do Until recsCrossingLines.EOF Set lnCross = fldShapeCrossingLines.Value // Set ptsTemp = lnEach.GetCrossings(lnCross) For i = 0 To ptsTemp.Count - 1 ptsCross.Add ptsTemp.Item(i) // Next i recsCrossingLines.MoveNext Loop recsLayer.MoveNext Loop 。。。 End Sub</P> <P>翻译如下:</P> <P> CMoRecordset recsLayer,recsCrossingLines; CMoField fldShapeLayer,fldShapeCrossingLines; CMoLine lnEach,lnCross; CMoRectangle rectExtent; int i ; long j;</P> <P> CMoPoints ptsCross,ptsTemp; CMoLayers layers(m_map.GetLayers()); CMoMapLayer pMapLayer(layers.Item(COleVariant(TEXT("lines")))); //这样写是否正确 </P> <P> rectExtent=m_map.GetExtent(); recsLayer=pMapLayer.SearchShape(rectExtent, moAreaIntersect, "");</P> <P> CMoFields fields(recsLayer.GetFields()); fldShapeLayer=fields.Item(COleVariant(TEXT("Shape"))); if (!ptsCross.CreateDispatch(TEXT("MapObjects2.Points"))) return;</P> <P> recsLayer.MoveFirst; while(! recsLayer.GetEof()) { lnEach = fldShapeLayer.GetValue().pdispVal ; //这段该如何写,翻得对不对? recsCrossingLines = pMapLayer.SearchShape(lnEach, moLineCross, ""); CMoFields fields1(recsCrossingLines.GetFields()); fldShapeCrossingLines = fields1.Item(COleVariant(TEXT("Shape"))); recsCrossingLines.MoveFirst; while(! recsCrossingLines.GetEof()) { lnCross = fldShapeCrossingLines.GetValue().pdispVal ; ptsTemp=lnEach.GetCrossings(lnCross); for(i=0;ptsTemp.GetCount()-1;i++) { ptsCross.Add(ptsTemp.Item(i)); //这样写出现格式转换错误,该怎么写? } recsCrossingLines.MoveNext; }</P> <P> recsLayer.MoveNext; }</P> <P>...</P> <P>还有循环中两个MoveFirst 和 MoveNext的位置是否正确,高手指点,谢谢了</P> |
|
|