話說滑鼠點選客戶區域實現移動窗體蠻簡單的,目前有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。
protectedoverride
void wndproc(ref
message m)
}
坑爹的是,form在無邊框的時候,雙擊工作區就最大化,把螢幕的工具欄區域也覆蓋了。
好吧,在建構函式裡加句this.maximumsize = screen.primaryscreen.workingarea.size;
最大化沒問題了,但是你丫最大化了還能移動就太二了吧。
想想就只能在處理windows訊息之前把滑鼠左鍵點選訊息遮蔽了。
完整**如下:
protectedoverride
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 ...