C++ builder 应用MAPX心得

原来c++ builder中用的类和VC++中用的不是一个类名。都是由工具自己自成的类,在$CBuilder$/Imports目录下或在VC的工作路径下。
BCB在安装OCX自动生成一个文件,而VC++要用[project]->[add to project]->[components and controls]项生成,要是MAP5,那么会是很多文件。
    当然也可以($mapx$/Samples50/C++/Cpp)示例下的MAPX.CPP文件,但那是针对VC++的下面是一个例子。且生成的类名和用VC生成的导入文件的类名也不一样。VC生成的类前加CC,
而BCB通常在后面加DISP。
    上面也就是开始学习用CB开发MAPX时,直接拷贝C++示例代码,编译时,虚类不能生成实例等错误的原因。
如:
对于接口CMapXFeature,在示例中类名同上,而在VC生成的类实例名为CCMapXFeature,在C++Builder中是CMapXFeatureDisp
下面是CB两个示例(5为MAPX的版本号):
示例一:
        CMapXStyleDisp  style;
        style.Bind(StringToOleStr("MapX.Style.5"));
        style.PickRegion();
        for(int i = 1; i <= Map1->Layers->get_Count(); i++){
          Map1->Layers->_Item(Variant(i))->set_Style(style);
        }

示例二:
  CMapXFeature *fNewSymbol;
  CMapXFeature *fMapSymbol;
  CMapXPointDisp pt;
  CMapXStyleDisp style;


  if(ToolNum == PLOT_VEHICLE_TOOL)
  {
    pt.Bind(StringToOleStr("MapX.Point.5"));
    pt->Set_(X1,Y1);
    style.Bind(StringToOleStr("MapX.Style.5"));
    style=Map1->DefaultStyle;
    fNewSymbol = NULL;
    fNewSymbol = Map1->FeatureFactory->CreateSymbol(EmptyParam,EmptyParam);
    if(fNewSymbol!=NULL)
    {
      fNewSymbol->set_Point(pt);
      fNewSymbol->set_Style(style);
      if(lyrMyLayer!=NULL)
      {
        fMapSymbol=lyrMyLayer->AddFeature(fNewSymbol);
        if(fMapSymbol!=NULL)
        {
          fArray[iVehicleCount].fFeature = fMapSymbol;
          fArray[iVehicleCount].iSpeed = 0;
          fArray[iVehicleCount].dHeading = 0;
          fArray[iVehicleCount].sName = "Vehicle "+IntToStr(iVehicleCount);
          iVehicleCount++;
          updateListCars();
        }
      }
    }
  }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值