移動無標題欄視窗

2021-09-30 02:23:35 字數 655 閱讀 1152

一般情況下,移動乙個窗體需要將滑鼠放置在標題欄上才能拖動窗體,為 什麼非要使用標題欄呢?其實我們可以使用乙個巧妙的方法來實現將滑鼠放置 在窗體上按下就可拖動窗體,下面先看實現**。在form1的「private」部分宣告過程:

在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)傳遞出去,這樣就巧妙的欺騙程式認為是標題欄被按下,當然就可拖動窗體了。

如何移動無標題欄的窗體

方法一 1.在form1類的標頭檔案中宣告wm nchittest訊息的回應過程函式 public user declarations message void fastcall wmnchittest twmnchittest message begin message map message h...

QT無標題欄加移動窗體

新增幾個成員變數 bool m mousepressed qpoint m mousepos qpoint m windowpos 過載幾個函式 void mousepressevent qmouseevent void mousereleaseevent qmouseevent void mous...

拖動無標題欄窗體

遇到這個問題,解決如下 1.引入命名空間 using system.runtime.interopservices 2.dllimport user32.dll public static extern bool releasecapture dllimport user32.dll public ...