Marshal.SizeOf的NotSupportedException异常问题
--------------------编程问答-------------------- 检查相关参数类型是否支持 --------------------编程问答--------------------菜鸟表示理解困难... --------------------编程问答--------------------
[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上也能用 --------------------编程问答--------------------
是的,不过SDK是FOR WINCE的.... --------------------编程问答-------------------- --------------------编程问答-------------------- 郁闷,我在vb.net中也遇到了这问题,也是在.net 中通过,在.net cf 中不能过
补充:.NET技术 , C#