/**//* MapInfo Products Knowledge Base Product: MapX Version: 4.x Platform: Windows 9598 & Windows NT Category: VC++ Code Samples Summary: Setting a projection through code in VC++ with MapX. Question: Is it possible to set the map projection to one of the projections listed in the CoordSys.PickCoordSys(..) dialog through code? Answer: Yes, it is possible to set a projection through code. Below is a sample of this using the CoordSys.Set(..) method. */ try ...{ CMapXDatum datum; CMapXRectangle rect; CMapXAffineTransform aForm; //Set the datum to the number specified by the second entry in the Mapinfow.prj file, in this case it is 62 datum.CreateDispatch(datum.GetClsid()); datum.SetFromList(62); COleVariant EmptyParam; //<--Used for variables which are not used in the CoordSys.Set(..) // method for any given projection. VARIANT Bound, AffineTrans; //<--Used to satisfy the Bounds and AffineTransform object // passed into the CoordSys.Set(..) method. //Set up the VARIANT objects EmptyParam.dblVal =0; Bound.vt = VT_DISPATCH; Bound.pdispVal = rect.m_lpDispatch; AffineTrans.vt = VT_DISPATCH; AffineTrans.pdispVal = aForm.m_lpDispatch; //Change the projection to a custom projection or one listed in the Mapinfow.prj file. In this case //the projection is changed to ""--- Projections of the World ---": "Mercator", 10, 62, 7, 0" try ...{ m_ctrlMapX.GetDisplayCoordSys().Set(10, datum, COleVariant("7"), COleVariant("0"), EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, Bound, AffineTrans); } catch (COleDispatchException *e) ...{ e->ReportError(); e->Delete(); }