关于窗口重画的问题,求助
海天候 2004-09-14 11:30:11 程序功能:拖动鼠标到桌面不同控件或窗口上以红色显示其外框,类似于超级屏捕效果.
现在效果已经实现,但是小弟试了很多次,都没搞定,前一次绘图的内容如何擦除??
试用updatewindow,sendmessage(wm_paint...等等,都没效果,请各位兄弟帮忙看看...
{这是主功能块,鼠标移动时取得对应窗口或控件...}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
p:tpoint;
whand:thandle;
fs:tcanvas;
begin
if capture then
begin
fs:=tcanvas.Create;
getcursorpos(p);
whand:=windowfrompoint(p);
fcan.Handle:=getwindowdc(getdesktopwindow);
//sendmessage(whand,WM_PAINT,0,0);//好像也无效...
getwindowrect(whand,fp);
fcan.Pen.Color:=clred;
fcan.Pen.Width:=2;
fcan.Brush.style:=bsclear;
fcan.Refresh;//刷新画布无效...
fcan.Rectangle(fp);
end;
end;