一个是ParkingWindowProc()函数,修改如下:
function ParkingWindowProc(Wnd: HWND; Msg, wParam, lParam: Longint): Longint; stdcall;
var
ControlWnd: HWND;
begin
case Msg of
WM_COMPAREITEM, WM_DELETEITEM, WM_DRAWITEM, WM_MEASUREITEM, WM_COMMAND:
begin
case Msg of
WM_COMPAREITEM: ControlWnd := PCompareItemStruct(lParam).CtlID;
WM_DELETEITEM: ControlWnd := PDeleteItemStruct(lParam).CtlID;
WM_DRAWITEM: ControlWnd := PDrawItemStruct(lParam).CtlID;
WM_MEASUREITEM: ControlWnd := PMeasureItemStruct(lParam).CtlID;
WM_COMMAND: ControlWnd := HWND(lParam);
else
Result := 0;
Exit;
end;
Result := SendMessage(ControlWnd, OCM_BASE + Msg, wParam, lParam);
end;
else
////////////////////////////////////////////////////////////////////////////
//zhaoyan edit begin
{
if (Msg = WM_NCDESTROY) and (Wnd = xParkingWindow) then xParkingWindow := 0;
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
}
if (Msg = WM_NCDESTROY) and (Wnd = xParkingWindow) then
begin
xParkingWindow := 0;
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
end else begin
Result := SendMessage(ControlWnd, OCM_BASE + Msg, wParam, lParam);
end;
//zhaoyan edit end
/////////////////////////////////////////////////////////////////////////////
end;
end;
按上面改后,对原有的在XP和2000系统的IE6环境下,控件无法释放的问题解决了,但随之而来的问题是原来在Tscrollbar中有一个TImage控件进行画图时,出现错拉!造成更大的问题!
请继续讨论,结束后,再开新贴给分!
function ParkingWindowProc(Wnd: HWND; Msg, wParam, lParam: Longint): Longint; stdcall;
var
ControlWnd: HWND;
begin
case Msg of
WM_COMPAREITEM, WM_DELETEITEM, WM_DRAWITEM, WM_MEASUREITEM, WM_COMMAND:
begin
case Msg of
WM_COMPAREITEM: ControlWnd := PCompareItemStruct(lParam).CtlID;
WM_DELETEITEM: ControlWnd := PDeleteItemStruct(lParam).CtlID;
WM_DRAWITEM: ControlWnd := PDrawItemStruct(lParam).CtlID;
WM_MEASUREITEM: ControlWnd := PMeasureItemStruct(lParam).CtlID;
WM_COMMAND: ControlWnd := HWND(lParam);
else
Result := 0;
Exit;
end;
Result := SendMessage(ControlWnd, OCM_BASE + Msg, wParam, lParam);
end;
else
////////////////////////////////////////////////////////////////////////////
//zhaoyan edit begin
{
if (Msg = WM_NCDESTROY) and (Wnd = xParkingWindow) then xParkingWindow := 0;
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
}
if (Msg = WM_NCDESTROY) and (Wnd = xParkingWindow) then
begin
xParkingWindow := 0;
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
end else begin
Result := SendMessage(ControlWnd, OCM_BASE + Msg, wParam, lParam);
end;
//zhaoyan edit end
/////////////////////////////////////////////////////////////////////////////
end;
end;
按上面改后,对原有的在XP和2000系统的IE6环境下,控件无法释放的问题解决了,但随之而来的问题是原来在Tscrollbar中有一个TImage控件进行画图时,出现错拉!造成更大的问题!
请继续讨论,结束后,再开新贴给分!
解决方案 »
- 【贺岁第三枪】好汉歌 坛子2010贺岁版
- 通过inputbox输入指定的文字,监控文字?
- 这个 取得序列号的代码 为何编译提示错误。
- 在编写代码的时候应该怎样写注释呢?
- 请问高手:打印队列信息JOB_INFO_1在哪个单元?
- 我如何去一个字段的前n位?
- ADO连接的问题:连接超时
- 急!!!TQUERY的数据怎样用execel打印出来?
- reportmach如何插入页眉??
- 现在要做ERP,但对财务知识不懂.有什么速成的吗?只需要做软件所需析财务知识.
- 请教各位大侠,我想学下关于网络编程,大家能不能推荐一些相应的书籍
- 关于DLL中封装Frame,在frame中有pagecontrol控件切换不翻页求助
var
ControlWnd: HWND;
begin
case Msg of
WM_COMPAREITEM, WM_DELETEITEM, WM_DRAWITEM, WM_MEASUREITEM, WM_COMMAND:
begin
case Msg of
WM_COMPAREITEM: ControlWnd := PCompareItemStruct(lParam).CtlID;
WM_DELETEITEM: ControlWnd := PDeleteItemStruct(lParam).CtlID;
WM_DRAWITEM: ControlWnd := PDrawItemStruct(lParam).CtlID;
WM_MEASUREITEM: ControlWnd := PMeasureItemStruct(lParam).CtlID;
WM_COMMAND: ControlWnd := HWND(lParam);
else
Result := 0;
Exit;
end;
Result := SendMessage(ControlWnd, OCM_BASE + Msg, wParam, lParam);
end;
else
////////////////////////////////////////////////////////////////////////////
//zhaoyan edit begin
{
if (Msg = WM_NCDESTROY) and (Wnd = xParkingWindow) then xParkingWindow := 0;
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
}
if (Msg = WM_NCDESTROY) and (Wnd = xParkingWindow) then
begin
xParkingWindow := 0;
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
end else begin
Result := SendMessage(ControlWnd, OCM_BASE + Msg, wParam, lParam); //这里的ControlWnd跟本就是个无效的值,修改成这样只能造成别的错误
end;
//zhaoyan edit end
/////////////////////////////////////////////////////////////////////////////
end;
end;