我在ACTIVEXFORM中SHOWMODAL显示另一个窗口,打开一个窗口没问题,同时打开两个含有该控件并且一起显示SHOWMODAL窗口时,另一个弹出的窗口就有问题,类似于内存泄漏之类的错误 ACTIVEX中: Form1 := TForm1.Create(Self);
try
Form1.ShowModal;
finally
Form1.Free;
end; Self换成了Nil也不行,不Free,在IE中可以,但是在TT中,即使SHOWMODAL,后面的窗口还是可以点,如果这时双击直接关闭掉当前窗口,一样也会弹出内存泄漏的错误 怎样解决这个问题呢 有个按这个解决,我试了也不行,修改AxCtrls.pas function ParkingWindow: HWND;
var
TempClass: TWndClass;
ParkingName : String;
begin
Result := xParkingWindow;
//if Result <> 0 then Exit; ParkingName := 'DAXParkingWindow_' + Format('%p', [@ParkingWindowProc]);
// fix Dax error : accessviolation (win2k, win xp) FillChar(TempClass, sizeof(TempClass), 0);
{f not GetClassInfo(HInstance, 'DAXParkingWindow', TempClass) then
begin
TempClass.hInstance := HInstance;
TempClass.lpfnWndProc := @ParkingWindowProc;
TempClass.lpszClassName := 'DAXParkingWindow';
if Windows.RegisterClass(TempClass) = 0 then
raise EOutOfResources.Create(SWindowClass);
end;}
if not GetClassInfo(HInstance, PChar(ParkingName), TempClass) then
begin
// fix Dax error : accessviolation (win2k, win xp)
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;
try
Form1.ShowModal;
finally
Form1.Free;
end; Self换成了Nil也不行,不Free,在IE中可以,但是在TT中,即使SHOWMODAL,后面的窗口还是可以点,如果这时双击直接关闭掉当前窗口,一样也会弹出内存泄漏的错误 怎样解决这个问题呢 有个按这个解决,我试了也不行,修改AxCtrls.pas function ParkingWindow: HWND;
var
TempClass: TWndClass;
ParkingName : String;
begin
Result := xParkingWindow;
//if Result <> 0 then Exit; ParkingName := 'DAXParkingWindow_' + Format('%p', [@ParkingWindowProc]);
// fix Dax error : accessviolation (win2k, win xp) FillChar(TempClass, sizeof(TempClass), 0);
{f not GetClassInfo(HInstance, 'DAXParkingWindow', TempClass) then
begin
TempClass.hInstance := HInstance;
TempClass.lpfnWndProc := @ParkingWindowProc;
TempClass.lpszClassName := 'DAXParkingWindow';
if Windows.RegisterClass(TempClass) = 0 then
raise EOutOfResources.Create(SWindowClass);
end;}
if not GetClassInfo(HInstance, PChar(ParkingName), TempClass) then
begin
// fix Dax error : accessviolation (win2k, win xp)
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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货