当前位置:编程学习 > C#/ASP.NET >>

Marshal.SizeOf的NotSupportedException异常问题

--------------------编程问答-------------------- 检查相关参数类型是否支持 --------------------编程问答--------------------
引用 1 楼 wuyq11 的回复:
检查相关参数类型是否支持

菜鸟表示理解困难... --------------------编程问答--------------------
    [StructLayout(LayoutKind.Sequential)]
    public class PageSetupDlgTag
    {
        public Int32 lStructSize = 0;
        public IntPtr hwndOwner = IntPtr.Zero;
        public IntPtr hDevMode = IntPtr.Zero;
        public IntPtr hDevNames = IntPtr.Zero;
        public Int32 Flags = 0;
        public Point ptPaperSize;
        public Rectangle rtMinMargin;
        public Rectangle rtMargin;
        public IntPtr hInstance = IntPtr.Zero;
        public Int32 lCustData = 0;
        public IntPtr lpfnPageSetupHook;;//如果注释掉这三行则不会引发异常
        public IntPtr lpfnPagePaintHook;//如果注释掉这三行则不会引发异常
        public IntPtr lpPageSetupTemplateName = null;//如果注释掉这三行则不会引发异常
        public IntPtr hPageSetupTemplate = IntPtr.Zero
    } //End Class PageSetupDlgTag



PageSetupDlgTag PageSetup = new PageSetupDlgTag();
PageSetup.lpfnPageSetupHook=Marshal.GetFunctionPointerForDelegate(d1);
PageSetup.lpfnPagePaintHook=Marshal.GetFunctionPointerForDelegate(d2);
PageSetup.lpPageSetupTemplateName=Marshal.StringToHGlobalAuto(s1);





WINCE没用过,建议全部改用IntPtr 来代替。
d1,d2是Prn2CallBack的委托实例,s1就是字符串了


--------------------编程问答-------------------- 不错!! --------------------编程问答-------------------- Marshal.StringToHGlobalAuto方法支持平台中没有WINCE

byte[] bytes=System.Text.Encoding.Default.GetByte(s1);
IntPtr ptr = Marshal.AllocHGlobal(bytes.Length);
Marshal.Copy(bytes,0,ptr,bytes.Length);
PageSetup.lpPageSetupTemplateName=ptr;

//...不需要使用后要释放资源

Marshal.FreeHGlobal(ptr);


--------------------编程问答-------------------- 感谢楼上各位老大的帮助

但是我上面的代码是厂商驱动里的SDK的代码...应该不需要修改就可以用的吧...
有没有别的方向的问题呢...(比如我没引用什么东西啥的?)
厂商是外国的...国内无支持...

--------------------编程问答-------------------- --------------------编程问答-------------------- .Net CompactFramework 2.0和.NET 2.0是2码事,Windows上能用的不一定在Windows Mobile上也能用 --------------------编程问答--------------------
引用 8 楼 virtualas 的回复:
.Net CompactFramework 2.0和.NET 2.0是2码事,Windows上能用的不一定在Windows Mobile上也能用

是的,不过SDK是FOR WINCE的.... --------------------编程问答-------------------- --------------------编程问答-------------------- 郁闷,我在vb.net中也遇到了这问题,也是在.net 中通过,在.net cf 中不能过
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,