C++ builder 应用MAPX心得

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

原来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();

}

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航