Watch, Follow, &
Connect with Us

ID: 18656, Fix Delphi ActiveX DAX error : access violation using IE

by KwangSoo Lee Email: Anonymous


Fix Delphi ActiveX DAX error : access violation using IE
Download Details
CDN Login Required to Download. (You will be redirected to the login page if you click on the Download Link)
To download this, you must have registered:
A free membership

For Delphi, Version 5.0  to 6.0 807 downloads
Copyright: No significant restrictions


Updated on Wed, 02 Jul 2003 23:07:17 GMT
Originally uploaded on Fri, 02 Aug 2002 02:25:04 GMT
SHA1 Hash: 9C685674E0500E7FC80872B97CA0BAD4917CAC5C
MD5 Hash: 7F479975987605F02E173241C3503EBB

    Explore the files in this upload

Description
when using Internet Explorer in Wink2, WinXp, ActiveForm or ActiveX control raise

DAX error : access violation at address 000

reason :
delphi's ocx use same parking window procedure.

one ocx must use individual parking window proc.



fix error.

edit delphi VCL source routine in axctrls.pas
and compile axctrls.pas
copy axctrls.dcu to lib directory.


axctrls.pas

function ParkingWindow: HWND;
var
TempClass: TWndClass;
ParkingName : String;
begin
Result := xParkingWindow;
if Result <> 0 then Exit;

// 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;

For more information, see http://suppul.x-y.net

Server Response from: USSVS-BDN14