delphi – TEventObject和WebBrowser

delphi – TEventObject和WebBrowser,第1张

概述我创建了一个TEventObject来为TWebBrowser提供OnMouseDown和OnMouseMove事件.移动鼠标和单击Web浏览器时,事件工作正常,但当我滚动或单击webbrowser的垂直滚动条时,会出现EZeroDivide异常. EurekaLog在d2d1.dll中报告EZeroDivide异常.我试图捕获异常,但我尝试的任何东西似乎都工作: function TEventO 我创建了一个TEventObject来为TWebbrowser提供OnMouseDown和OnMouseMove事件.移动鼠标和单击Web浏览器时,事件工作正常,但当我滚动或单击webbrowser的垂直滚动条时,会出现EZerodivIDe异常. EurekaLog在d2d1.dll中报告EZerodivIDe异常.我试图捕获异常,但我尝试的任何东西似乎都工作:

function TEventObject.Invoke( dispID: integer; const IID: TGUID; LocaleID: integer; Flags: Word; var Params;  VarResult,ExcepInfo,ArgErr: Pointer ): HResult;begin  try    if ( dispID = disPID_VALUE ) then    begin      if Assigned( FOnEvent ) then        FOnEvent;      Result := S_OK;    end    else    begin      FOnEvent := nil;      Result := E_NOTIMPL;    end;  except    on EZerodivIDe do    begin      FOnEvent := nil;      Result := E_NOTIMPL;    end;  end;end;

我的问题是我能否以某种方式阻止异常或者可以检测到TWebbrowser垂直滚动条上的mousedown以防止异常?这个异常对我来说很难解决,因为我对TEventObject了解不多,我不明白为什么异常只在单击或拖动垂直滚动条时出现.如果需要,我可以提供更多信息.编译器:Delphi 2010.

[编辑]
看这篇文章:
http://www.codenewsfast.com/cnf/article/0/waArticleBookmark.7401953
一个非常简单的演示应用程序可用于:
 http://dl.dropbox.com/u/2167512/bugs/ie9/ie9_bug.zip

这可以防止错误:

Math.SetExceptionMask([exInvalIDOp,exDenormalized,exZerodivIDe,exOverflow,exUnderflow,exPrecision]);
解决方法 尝试禁用FPU异常:

System.Set8087CW(3F);

在较新版本的Delphi中:

Math.SetExceptionMask([exInvalIDOp,exPrecision]);
总结

以上是内存溢出为你收集整理的delphi – TEventObject和WebBrowser全部内容,希望文章能够帮你解决delphi – TEventObject和WebBrowser所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存