这是C++中的函数
其中sPnt结构体,enPTIVflag枚举已在C#中定义过了VOID WINAPI PaintInView(
       //sPnt pntTypeArray[], 
        //int arrSize, 
        //CDC *pDC, 
        //int rcWidth, 
        //int rcHeight,
        //double central_x,
        //double central_y, 
        //int level=0,
        //enPTIVflag ptivflag=PTIV_R2PSMP);
        C#中的的定义
         [DllImport("TQSDEModule.dll")]        
        public extern static void PaintInView(
            sPnt[] pntTypeArray,
            int arrSize,
            IntPtr pDC,
            int rcWidth,
            int rcHeight,
            double central_x,
            double central_y,
            int level,
            enumPTIVflag ptivflag);在程序中调用时直接说访问的内存受保护
PaintInView(
pntArray,
pntArray.Length,
new IntPtr()//这里出错可能性很大...
1,
1,
13,
123,
1,
enumPTIV.NONE);

解决方案 »

  1.   

    另外在C++中可以直接初始化GDI+
    GDIPlusStartUp(&XX,&XX,null)我在C#中怎么 搞呢
    Graphics g = Graphics.FromHwnd(this.Handle)??
      

  2.   

    C#中的的定义 
            [DllImport("TQSDEModule.dll")]        
            public extern static void PaintInView( 
                sPnt[] pntTypeArray, //结构体数组
                int arrSize, 
                IntPtr pDC, //CDC类指针CDC *pDC
                int rcWidth, 
                int rcHeight, 
                double central_x, 
                double central_y, 
                int level, 
                enumPTIVflag ptivflag); //枚举类型
    个人觉得这三处出错可能性最大,能不能通过什么办法测出来
      

  3.   

      /// <summary>
        /// 图层控制结构体定义,PaintInView第一个参数是结构体数组
        /// </summary>
        public struct sPnt
        {
            public enumShangHaiVecType ishType;//原C++中用INT定义的,在这里我封装了下用了个枚举
            public bool bPaint;
            public char szFilter;        public sPnt(enumShangHaiVecType _ishType, bool _bPaint, char _szFilter)
            {
                this.ishType = _ishType;
                this.bPaint = _bPaint;
                this.szFilter = _szFilter;
            }
        }
        PaintInView第一个参数定义
        #region 控制各图层的显示与隐藏
            public static sPnt[] tmpsPnt = new sPnt[]{
    new sPnt(enumShangHaiVecType.TILE_IMAGE,true,'\0'),
    new sPnt(enumShangHaiVecType.VEC_SH_ROAD,true,'\0')};
            #endregion
      

  4.   

    顶下
    下午要出去了
    忙碌的周一呀。
    那个GDI+初始化的问题大家也帮忙搞下,真的谢谢了。想要分的可以到ASP。NET论坛,那里我分多