关于desktop的更新问题!(100分)

  • 主题发起人 主题发起人 愚庶淋疯
  • 开始时间 开始时间

愚庶淋疯

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么得不到desktop的更新区域呢?还是desktop是整屏更新的吗?谢谢大家了<br>var<br>&nbsp; r: TRect;<br>&nbsp; msg:tagmsg;<br>begin<br>&nbsp; getmessage(msg,hwnd_desktop,wm_paint,wm_paint);<br>&nbsp; GetUpdateRect(hwnd_desktop, r, true);<br>&nbsp; Caption := '(' + inttostr(r.Left) + ', ' + inttostr(r.Top) + ') - (' +<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inttostr(r.Right) + ', ' + inttostr(r.Bottom) + ')';<br>end;<br>
 
RedrawWindow(0,nil,0,RDW_ERASE or RDW_INVALIDATE or RDW_ALLCHILDREN);
 
樓上的大哥給的api是重畫窗體吧?或者我理解錯誤,可否請您說清楚一點。我只是想知道怎樣才能獲知更新的區域。
 
我自己也试了几种方法,但是...。怎样获得desktop的更新区域?或者说getupdaterect这个api应该在什么时候调用?是在消息队列得到wm_paint or wm_ncpaint or WM_ERASEBKGND之前还是之后?我怎么一直没有办法得到更新区域?我是使用全局hook(hook dll),hook具体设置如下:setwindowshookex(wh_getmessage,@hookfunc,self.handle,0)<br>其中rect是一个rect指针,<br>function Hookfunc(icode:integer;wParam:WPARAM;lParam:LPARAM):lresult;<br>begin<br>if icode=(wm_paint)or(wm_ncpaint)or(WM_ERASEBKGND) then<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp;getupdaterect(lparam^.hwnd,rect^,false);<br>&nbsp; &nbsp;end;<br>result:=0;<br>end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
590
import
I
I
回复
0
查看
655
import
I
I
回复
0
查看
779
import
I
后退
顶部