Delphi7开发的Ocx控件提示DAX Error的解决办法
2008-08-29 11:12
399 查看
据说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解决不了,其实是少注释了一行代码
我用的是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解决不了,其实是少注释了一行代码
相关文章推荐
- fix DAX error(解决delphi编写的ocx控件中的DAX error问题)
- 打开VB开发工具提示:Imagelist来自mscomctl.ocx控件出错,可能是mscomctl.ocx过期,解决方法
- MyEclipse6.5通过Jetty跑Web应用时提示OutOfMemoryError: PermGen space的解决办法
- 配置Android开发环境常见错误解决办法(陆续添加)“your project contains error(s),please fix them before running your appli
- Eclipse开发导入fbreaderj-2.1时其中工程提示import android.support.v4的解决办法
- 解决wordpress提示Error establishing a database connection的办法
- eclipse开发spring配置文件xml代码不提示的解决办法
- 【iOS开发-19】遇到Apple Mach-O Linker Error的情况和解决办法,调整你打开的姿势
- QTCreator 打不开,提示“loadlibrary failed with error 126:找不到指定模块”的解决办法
- ReportView 打印提示 无法加载客户端控件的解决办法
- eclipse android 开发加载图片资源提示找不到对应名称解决办法
- IE加载ocx时提示控件不安全的解决方法
- Android开发环境安装SDK后提示parseSdkContent failed的解决办法
- Android 错误提示:Conversion to Dalvik format failed with error 1 解决办法
- Android开发之WebView输入框提示解决办法
- C#中引用第三方ocx控件引发的问题以及解决办法
- Visual GDB进行Android NDK开发,报错:error : undefined reference to '__android_log_print' 解决办法
- 开机出现“CPU fan error”的提示的原因和解决办法
- Android项目更换开发环境时出现的 java.lang.VerifyError 异常解决办法
- nginx提示Error: Too many open files的解决办法