Visual C++ .Net 接口定义 实例// Com.Xp.Geometry.h #pragma once //编译一次 // compile with: /clr using namespace System; namespace Com { namespace Xp { namespace Geometry { #ifndef Const_PI_H #define Const_PI_H const double PI=3.141592654; const double e=2.718; #endif public enum class esriGeometryDimension :int { GeometryNoDimension = -1, Geometry0Dimension = 1, Geometry1Dimension = 2, Geometry2Dimension = 4, Geometry25Dimension = 5, Geometry3Dimension = 6, }; public enum class GeometryType :int { GeometryNull = 0, GeometryPoint = 1, GeometryMultipoint = 2, GeometryPolyline = 3, GeometryPolygon = 4, GeometryEnvelope = 5, GeometryPath = 6, GeometryAny = 7, GeometryMultiPatch = 9, GeometryRing = 11, GeometryLine = 13, GeometryCircularArc = 14, GeometryBezier3Curve = 15, GeometryEllipticArc = 16, GeometryBag = 17, GeometryTriangleStrip = 18, GeometryTriangleFan = 19, GeometryRay = 20, GeometrySphere = 21, GeometryTriangles = 22, }; // Visual C++ .Net 接口定义 public interface class IConvert { bool PreImport(); bool Import(); bool Export(); }; public delegate void ClickEventHandler(int, double); //[ComVisibleAttribute(true)] public interface class IGeometry :IDisposable { public : property esriGeometryDimension Dimension; //IEnvelope Envelope property esriGeometryType GeometryType; //bool IsEmpty {get;set;} //out error property bool IsEmpty; //ISpatialReference SpatialReference { get; set; } void GeoNormalize(); void GeoNormalizeFromLongitude(double Longitude); ///void Project(ISpatialReference newReferenceSystem); //void QueryEnvelope(IEnvelope outEnvelope); void SetEmpty(); void SnapToSpatialReference(); [System::Runtime::InteropServices::DllImport("Kernel32")] static Boolean CloseHandle( IntPtr handle ); //读写属性 property int Property_Block; //读写属性 property int Property_Bloc_get_set { int get(); void set(int value); /*void set(int value) { MyInt = value; }*/ } //只读属性 property int Property_Bloc_get { int get(); } //只写属性 property int Property_Bloc_set { void set(int value); } //事件 event ClickEventHandler^ OnClick; }; } } }