在private部分加入下列代碼:
procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
在程序部分加入以下代碼:
procedure TForm1.wmnchittest(var msg:twmnchittest);????????????? 
begin????????????????????????????????????????????????????????????
? inherited;?????????????????????????????????????????????????????
? if (htclient=msg.result) then msg.result:=htcaption;?????????? 
end;???????????????????????????????????????????????????????????? 
上面的關鍵代碼雖然只有兩行,但它實現了鼠標直接拖動窗體的目的。代碼的原理是利用窗體的WM_NCHITTEST消息,這個消息是當光標移動、鼠標按下或釋放時發生的,當程序檢測到鼠標在窗體中按下的消息后(消息的值為htClient),將鼠標在標題欄上按下時產生的消息(值為htCaption)傳遞出去,這樣就巧妙的欺騙程序認為是標題欄被按下,當然就可拖動窗體了。
新聞熱點
疑難解答