首页 > 代码库 > WPF引用OCX导致的算术运算符溢出

WPF引用OCX导致的算术运算符溢出

原文链接http://www.ilisen.net/wpf-references-ocx-causes-an-arithmetic-operator-overflow.html

这个问题其实原因在于OCX控件与WPF类型的一些不匹配。

之前,我在我的项目里面,通过winform控件承载ocx,然后通过中 间生成的DLL来达到引用OCX的目的。一般情况下,这种方法是比较方便而且有效的(之前也是使用的这种方法),后来发现OCX报这个异常之后,不能再通 过这种方式引用了(其实方法还是这个方法,只不过稍微改变一下)。

首先,我们还是通过winform控件承载OCX,不过我们在这里面需要调用一下系统的API【msvcr71.dll】,具体方法如下:

[code lang="csharp"] [DllImport("msvcr71.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int _fpreset();[/code]

然后我们在初始化完控件之后,调用这个方法如下:

[code lang="csharp"] SoftAgent = new AxSoftAgent.AxSoftAgentBar();
((System.ComponentModel.ISupportInitialize)(this.SoftAgent)).BeginInit();
this.Controls.Add(SoftAgent);
((System.ComponentModel.ISupportInitialize)(this.SoftAgent)).EndInit();
_fpreset();[/code]

然后将你需要调用的方法或者事件封装到这个类里面,然后引用这个控件生成的DLL,在调用方法、事件,这样就不会再报XX发生溢出(XXX OVERFLOW)的错误了。

[box]这个地方需要使用msvcr71.dll,如果没有,可以到网上下载,64位win7放到X:\Windows\SysWOW64[/box]