• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi7开发的Ocx控件提示DAXError的解决办法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

据说delphi5到delphi7一直有这个bug,不知道更高的版本有没有改过来

我用的是delphi7

 

对Delphi了解得并不多,这次写ocx也是赶鸭子上架。所以这个bug的原因我也说不明白,但是确实把问题解决了,下面把解决方法说一下(其实也都是从网上搜的,稍加整理)

 

1、到delphi安装目录下,找到Source\VCL\AxCtrls.pas文件(这个文件中的代码有bug),拷贝到你的项目文件夹下,把这个文件添加为你项目的一部分(这样delphi就会应用你修改后的AxCtrls.pas)

 

2、找到AxCtrls.pas文件中的函数ParkingWindow,用下面的代码替换


  function   ParkingWindow:   HWND;  
  var  
      TempClass:   TWndClass;  
      ParkingName   :   String;  
  begin  
      Result   :=   xParkingWindow;   
      //if   Result   <>   0   then   Exit;   //这行代码在delphi5和delphi6中好像不用注释掉
    
      //   fix   Dax   error   :   accessviolation   (win2k,   win   xp)  
      ParkingName   :=   'DAXParkingWindow_'   +       Format('%p',   [@ParkingWindowProc]);  
   
      FillChar(TempClass,   sizeof(TempClass),   0);  
      if   not   GetClassInfo(HInstance,   PChar(ParkingName),   TempClass)   then   //   fix   Dax   error   :   accessviolation   (win2k,   win   xp)  
      begin  
          TempClass.hInstance   :=   HInstance;  
          TempClass.lpfnWndProc   :=   @ParkingWindowProc;  
          TempClass.lpszClassName   :=   PChar(ParkingName);   //   fix   Dax   error   :   accessviolation   (win2k,   win   xp)  
          if   Windows.RegisterClass(TempClass)   =   0   then  
              raise   EOutOfResources.Create(SWindowClass);  
      end;  
      xParkingWindow   :=   CreateWindowEx(WS_EX_TOOLWINDOW,   TempClass.lpszClassName,   nil,  
          WS_POPUP,   GetSystemMetrics(SM_CXSCREEN)   div   2,  
          GetSystemMetrics(SM_CYSCREEN)   div   2,   0,   0,   0,   0,   HInstance,   nil);  
      SetWindowPos(xParkingWindow,   0,   0,   0,   0,   0,   SWP_NOACTIVATE   or   SWP_NOREDRAW  
          or   SWP_NOZORDER   or   SWP_SHOWWINDOW);  
      Result   :=   xParkingWindow;  
  end;  

 

3、编译项目即可

 

参考资料:

http://www.delphibbs.com/delphibbs/dispq.asp?lid=919005

http://blog.chinaunix.net/u/4831/showart_187926.html,这个文档说delphi7解决不了,其实是少注释了一行代码


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi中StrToDateTime函数TFormatSettings参数的使用发布时间:2022-07-18
下一篇:
delphi计算两个时间差发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap