Winform C 點選工作區域移動窗體

2022-02-10 18:26:13 字數 884 閱讀 5257

話說滑鼠點選客戶區域實現移動窗體蠻簡單的,目前有3種方法。

1.通過form的mousedown、mousemove、mouseup實現。這個邏輯比較簡單就不介紹了。

2.通過form的mousedown事件裡呼叫api。主要是呼叫releasecapture()及sendmessage(this.handle, wm_syscommand, sc_move + htcaption, 0),wm_syscommand=0x112、sc_move=0xf010、htcaption=0x2。大概是這樣,有興趣的可以試試。

3.重寫wndproc函式,處理wm_nchittest訊息。

我是懶得用api,就選了第三種實現。

先看**,對wm_nchittest訊息有興趣可以看看這裡,以及msdn。

protected

override

void wndproc(ref

message m)

}

坑爹的是,form在無邊框的時候,雙擊工作區就最大化,把螢幕的工具欄區域也覆蓋了。

好吧,在建構函式裡加句this.maximumsize = screen.primaryscreen.workingarea.size;

最大化沒問題了,但是你丫最大化了還能移動就太二了吧。

想想就只能在處理windows訊息之前把滑鼠左鍵點選訊息遮蔽了。

完整**如下:

protected

override

void wndproc(ref

message m)

base.wndproc(ref

m);

if (m.msg == 0x84) //

wm_nchittest

}

使用按鍵精靈識別點選區域進行點選

使用按鍵精靈,我們可以錄製指令碼,根據元件座標進行一些自動化的操作。但是,有時元件的座標可能不是一定的,會發生細微的變化。我們可以根據識別點選區域進行點選。一 獲取點選區域 1.開啟按鍵精靈軟體,點選抓抓 2.點選影象 截圖 框選區域 位圖另存為,儲存位圖 bmp 3.在附件中新增該位圖 bmp 為...

iOS 為UIButton擴大點選響應區域

我們可以為uibutton建立乙個category,然後利用runtime的繫結屬性,來擴大響應區域。先看一下.h檔案裡的,只宣告了乙個函式。使用的時候直接利用這個函式擴大四周的響應區域。import inte ce uibutton enlargetouchaera void setenlarge...

Unity 點選滑鼠右鍵實現3D物體拖拽移動

要想通過滑鼠拖拽物體需要拿到物體的世界座標以及螢幕座標.其次獲取滑鼠在螢幕中移動的偏移量 private vector3 aotiscreen 用來獲取物體在螢幕的座標 private vector3 mousestartscreen 用來獲取滑鼠按下時在螢幕的位置 private vector3 ...