hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1204回复:0

求助:一段VB代码直译成VC的几个问题

楼主#
更多 发布于:2005-04-14 21:08
<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>
喜欢0 评分0
QQ:22621544 欢迎交流~^^~
游客

返回顶部