C++ builder 应用MAPX心得
2004-11-13 00:00
357 查看
原来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(); } } } }
相关文章推荐
- C++算法系列之日历生成的算法代码
- ATL实现Connection Point的一种简单的方法
- oracle中的分页
- 哪个高手帮帮忙啊,谢谢了
- 帮帮我好不好!!!!
- 输入输出流为什么要用缓冲区?
- 引用一个人的说法看中国软件需求基础
- 力争最简单把*、&说清楚
- 开发工具浅谈
- 一个画图类,类似ms_chart的线图,适用于科学仿真数据分析(一)
- 怎样为任何控件和区域添加提示信息:用自己封装的CTip类
- 从注册表中还原MSNMessenger口令
- 看到一篇好文章与大家分享!!!!!
- 从数据库中动态选取下拉列表的方法
- thinking in c++ 卷2
- thinking in c++卷2
- thinkng in c++卷2
- Thinking in C++ 卷2中文版
- Tomcat中通过JNDI配置访问数据库