修正delphi编写的ocx控件中的DAX error问题

最近用Delphi7编写了两个IE插件,在同一IE页面打开含这两个插件提示DAX错误。在网上找到一篇文章,原来是Delphi编写插件在Win2k和XP下有这个问题,需要修改Vcl目录下AxCtrls.pas文件里面的ParkingWindow函数内容,编译后将AxCtrls.dcu拷贝到Lib目录下,重新编译插件即可。

  1. functionParkingWindow:HWND;
  2. var
  3. TempClass:TWndClass;
  4. {$IFNDEFPARKINGWINDOWFIX}
  5. ParkingName:String;
  6. {$ENDIF}
  7. begin
  8. Result:=xParkingWindow;
  9. ifResult<>0thenExit;
  10. FillChar(TempClass,sizeof(TempClass),0);
  11. {$IFNDEFPARKINGWINDOWFIX}
  12. //fixDaxerror:accessviolation(win2k,winxp)
  13. ParkingName:='DAXParkingWindow_'+Format('%p',[@ParkingWindowProc]);
  14. ifnotGetClassInfo(HInstance,PChar(ParkingName),TempClass)then//fixDaxerror:accessviolation(win2k,winxp)
  15. {$ELSE}
  16. ifnotGetClassInfo(HInstance,'DAXParkingWindow',TempClass)then
  17. {$ENDIF}
  18. begin
  19. TempClass.hInstance:=HInstance;
  20. TempClass.lpfnWndProc:=@ParkingWindowProc;
  21. {$IFNDEFPARKINGWINDOWFIX}
  22. TempClass.lpszClassName:=PChar(ParkingName);//fixDaxerror:accessviolation(win2k,winxp)
  23. {$ELSE}
  24. TempClass.lpszClassName:='DAXParkingWindow';
  25. {$ENDIF}
  26. ifWindows.RegisterClass(TempClass)=0then
  27. raiseEOutOfResources.Create(SWindowClass);
  28. end;
  29. xParkingWindow:=CreateWindowEx(WS_EX_TOOLWINDOW,TempClass.lpszClassName,nil,
  30. WS_POPUP,GetSystemMetrics(SM_CXSCREEN)div2,
  31. GetSystemMetrics(SM_CYSCREEN)div2,0,0,0,0,HInstance,nil);
  32. SetWindowPos(xParkingWindow,0,0,0,0,0,SWP_NOACTIVATEorSWP_NOREDRAW
  33. orSWP_NOZORDERorSWP_SHOWWINDOW);
  34. Result:=xParkingWindow;
  35. end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值