function MouseInPicRegion(...): MOUSE_POS; //鼠标位置
var
RectHRGN: HRGN;
begin
...
RectHRGN := CreateRgn(ACanvas);
...
end;function CreatePicRgn(ACanvas:TCanvas): HRGN; //产生图元区域的句柄
begin
...
Result := CreateRectRgn(mRect.Left, mRect.Top, mRect.Right, mRect.Bottom);//返回HRGN的一个类型值
end;
现在问题是不停地调用CreateRectRgn而占用大量的系统资源最终导致系统崩溃。我用MemProof测试过,就是因为
CreateRectRgn这个函数不停的调用占成的,会造成GDI的Region疯狂的往上涨。
但是我在CreatePicRgn这个函数里又没办法用DeleteObject来释放,我原来也试过在CreatePicRgn这个函数里改成
function CreatePicRgn(ACanvas:TCanvas): HRGN; //产生图元区域的句柄
var
RectRGN : HRGN;
begin
...
try
RectRGN := CreateRectRgn(mRect.Left, mRect.Top, mRect.Right, mRect.Bottom);//返回HRGN的一个类型值
Result := RectRGN;
finally
DeleteObject(RectRGN);
end;
end;
但是这样调用后会造成我调用MouseInPicRegion这个函数取不到句柄。这要怎么释放这些资源呢?
var
RectHRGN: HRGN;
begin
...
RectHRGN := CreateRgn(ACanvas);
...
end;function CreatePicRgn(ACanvas:TCanvas): HRGN; //产生图元区域的句柄
begin
...
Result := CreateRectRgn(mRect.Left, mRect.Top, mRect.Right, mRect.Bottom);//返回HRGN的一个类型值
end;
现在问题是不停地调用CreateRectRgn而占用大量的系统资源最终导致系统崩溃。我用MemProof测试过,就是因为
CreateRectRgn这个函数不停的调用占成的,会造成GDI的Region疯狂的往上涨。
但是我在CreatePicRgn这个函数里又没办法用DeleteObject来释放,我原来也试过在CreatePicRgn这个函数里改成
function CreatePicRgn(ACanvas:TCanvas): HRGN; //产生图元区域的句柄
var
RectRGN : HRGN;
begin
...
try
RectRGN := CreateRectRgn(mRect.Left, mRect.Top, mRect.Right, mRect.Bottom);//返回HRGN的一个类型值
Result := RectRGN;
finally
DeleteObject(RectRGN);
end;
end;
但是这样调用后会造成我调用MouseInPicRegion这个函数取不到句柄。这要怎么释放这些资源呢?
解决方案 »
- 请问cxgrid 录入信息时 怎么添加本地图片 保存到数据库
- 原来csdn的专家分真的是分
- 请教一下如何从ACCESS数据库OLE对象字段中读取JPG图片
- 如何把文本导入数据库?
- 进来没有分,给个人分帖,请不要进
- 如何只使form的最大化按键消失
- 小弟有一个做向导的程序,可是有点问题,请大家帮忙. 附:源程序
- 我如何才能在timage上再画上一个位图呢?我用imageA.canvas,draw(1,1,imageB)不行啊
- 請問大家:在notepad中,如何輸入頓號,呵呵.
- 怎样使.showmodal显示的窗口返回一个特定值?
- 请会api的专家解答,不会的请不要乱说。
- Dephi代码繁转简的问题。。。。。。
var
RectRGN : HRGN;
begin
...
try
RectRGN := CreateRectRgn(mRect.Left, mRect.Top, mRect.Right, mRect.Bottom);//返回HRGN的一个类型值
Result := RectRGN;
finally
DeleteObject(RectRGN); //这里释放
end;
end;
那你创建它干嘛,占cpu玩儿么?
这是一个函数,它要返回CreateRectRgn所产生的HRGN值
这个代码很明显的错误,CreateRectRgn完了又DeleteObject,你说那返回结果是什么
var
RectHRGN: HRGN;
begin
...
try
RectHRGN := CreateRgn(ACanvas);
...
finally
DeleteObject(RectHRGN );
end;
end;