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(); } } } }
發佈了32 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章