在VB的事件里,沒有對當窗體移動的時候相應的處理事件接口。然而
可以利用子類處理來實現。具體的想法是利用子類處理獲得 WM—MOVE的消息
然后傳遞消息到一個正常的窗體的一個按紐,利用按紐的事件接口來模擬對窗體移動事件的模擬:其具體的實現代碼如下:
在窗體里加入一個按紐,命名為EventBn 利用EventBn_click()事件來實現對窗體移動事件的處理/
模塊代碼如下:
public Oldproc as long
public BnHwnd as long
public function Newproc(byval hwnd as long,byval msg as long,byval wp as long, byval lp as long) as long
if msg=wm_move then´捕獲窗體移動事件
sendmessage BnHwnd,wm_lbuttondown,1,0
sendmessage BnHwnd,wm_lbuttonup,1,0´將消息發送到按紐,使其發生CLICK事件
end if
newproc= callwindowproc(oldproc,hwnd,msg,wp,lp)
end function
窗體內代碼:
private sub form_load()
BnHwnd=EventBn.hwnd´獲得按紐句丙
Oldproc=setwindowlong(me.hwnd,gwl_wndproc,addressof Newproc)
end sub
private sub EventBn_click()
´在這里添加窗體移動的代碼
end sub
原文轉自:http://www.anti-gravitydesign.com