自己程式設計模擬 MouseEnter,MouseExit 事件 (轉)
自己模擬 MouseEnter,MouseExit 事件
很多第三方的都提供的 MouseEnter 和 MouseExit 事件來補充 MouseMove 事件的不足(MouseMove 事件不能有效的捕獲滑鼠是否已在控制元件外),但是這些控制元件或要註冊,或集合了其他實際沒有什麼作用控制元件,另外在中加入太多的控制元件也會影響程式的,利用 的 ,我們可以在 MouseMove 中模擬 MouseEnter 和 MouseExit,雖然我提供的中沒有真正的這兩個事件,但的確提供了這兩個事件所具備的功能。好了!讓我們實現吧。
首先載入一個模組,在模組中宣告以下兩個 API 函式:
Public Declare Function SetCapture Lib "user32" _
(ByVal hwnd As Long) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
SetCapture 的功能是:設定滑鼠捕獲指定的視窗(Windows 每個控制元件都是一個視窗。比如桌面上顯示的圖示就是一個視窗,其實是兩個,另一個顯示描述這個圖示的文字),將收到這個視窗所有的滑鼠移動或擊按的所有資訊。
ReleaseCapture 的功能是:取消捕獲滑鼠資訊。
Windows 系統就是一個訊息系統,系統一直在等待的訊息,並加一相應,但處理完一個訊息後,系統有處以下一輪的等待。訊息傳遞是 Windows 的核心。
讓我們在 Form1 中放置一個按鈕或其他控制元件,但此控制元件必須具有視窗控制程式碼(hWnd),比如 提供的 Image 控制元件是一個次圖形控制元件,沒有視窗控制程式碼,而 Picture,Command Button 等控制元件就有視窗控制程式碼,我們就拿 Command Button 來作示範,在 Form1 上放置一個 Command Button,在 Command1_MouseMove()事件內加入以下程式碼:
Private Sub Command1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
With Command1
'當滑鼠在越出控制元件外
If Not ((X < 0) Or (Y < 0) Or _
(X > .Width) Or (Y > .Height)) Then
'滑鼠指標在按鈕外時,讓其他控制元件也收到標事件
ReleaseCapture
'為了不讓 MouseMove 事件反覆觸發
If .Caption <> "outs" Then
.Caption = "outside"
End If
'滑鼠指標在按鈕上,捕獲他但滑鼠移出是我們將收到滑鼠事件
SetCapture .hwnd
Else
.Caption = "inside"
End If
End With
End Sub
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989317/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript mouseenter 事件JavaScript事件
- jQuery mouseenter事件jQuery事件
- 模擬tap事件和longTap事件事件
- wx模擬滑鼠事件事件
- 一個51程式設計和模擬——流水燈程式設計
- cursor: pin S wait on X等待事件模擬(轉)AI事件
- Linux程式設計:模擬程式排程演算法Linux程式設計演算法
- JavaScript 模擬事件觸發JavaScript事件
- SciTech-EECS-電設計- PCB設計-電路設計與模擬系統 + SPICE 模擬描述與模型模型
- css模擬實現雙擊事件程式碼例項CSS事件
- Proteus實現簡單51程式的設計與模擬
- FPGA程式設計基礎(二)--常用行為模擬描述FPGA程式設計
- 網路程式設計基礎,模擬get post請求程式設計
- 亞馬遜書評——《程式碼本色:用程式設計模擬自然系統》亞馬遜程式設計
- COST231-WI模型通道模擬,原始碼模擬matlab程式設計原始碼模型原始碼Matlab程式設計
- 建立自己的上傳元件的程式設計思路 (轉)元件程式設計
- modelsim指令碼模擬設計(三)帶標頭檔案模擬指令碼
- jQuery模擬實現滑鼠點選事件程式碼例項jQuery事件
- 天才模擬器程式設計師死於網路暴力中程式設計師
- read by other session等待事件模擬Session事件
- 系統設計面試模擬 | 如何設計Netflix?面試
- 事件與介面程式設計事件程式設計
- 事件驅動程式設計事件程式設計
- 玩轉模擬物件物件
- 使用Scala模擬簡單的RPC通訊,Socket程式設計RPC程式設計
- Speos — 光學產品設計模擬工具
- library cache pin等待事件的模擬事件
- 基於Select模型的通訊模擬--win32程式設計程式碼模型Win32程式設計
- 關注程式設計師自己的文化——專訪Tom DeMarco (轉)程式設計師
- 模擬退火演算法Python程式設計(4)旅行商問題演算法Python程式設計
- 【Java程式設計】使用Java模擬C/C++中的queue佇列Java程式設計C++佇列
- SOLIDWORKS設計包線性靜態模擬Solid
- Web 魔方模擬器的設計與實現Web
- 5601. 設計有序流 (場景模擬)
- SPEOS—光學產品設計及模擬工具
- 簡單實現.NET Hook與事件模擬Hook事件
- cursor: pin S wait on X等待事件模擬AI事件
- 排球比賽計分程式模擬衝刺(sprint)