zoukankan      html  css  js  c++  java
  • Delphi7开发的Ocx控件提示DAX Error的解决办法

    据说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解决不了,其实是少注释了一行代码

  • 相关阅读:
    2019上海网络赛 F. Rhyme scheme 普通dp
    2019牛客多校第七场E Find the median 权值线段树+离散化
    2019南昌网络赛  I. Yukino With Subinterval 树状数组套线段树
    ACM-ICPC 2018 徐州赛区网络预赛 I. query 树状数组
    计算机专业 程序员技术练级攻略(转载)
    HDU 3642 求体积交集
    2019牛客暑期多校训练营(第三场)F Planting Trees 单调队列
    Manthan, Codefest 16 G. Yash And Trees dfs序+线段树+bitset
    POJ 1177 矩形周长并 模板
    HDU 4614 线段树+二分查找
  • 原文地址:https://www.cnblogs.com/teamleader/p/1279289.html
Copyright © 2011-2022 走看看