六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

自己編程模擬MouseEnter,MouseExit事件

[摘要]很多第三方的控件都提供的 MouseEnter 和 MouseExit 事件來補充 MouseMove 事件的不足(MouseMove 事件不能有效的捕獲鼠標是否已在控件外),但是這些控件或要注冊,或集合了其他實際沒有什么作用控件,另外在程序中加入太多的控件也會影響程序的性能,利用 Windows...
很多第三方的控件都提供的 MouseEnter 和 MouseExit 事件來補充 MouseMove 事件的不足(MouseMove 事件不能有效的捕獲鼠標是否已在控件外),但是這些控件或要注冊,或集合了其他實際沒有什么作用控件,另外在程序中加入太多的控件也會影響程序的性能,利用 Windows 的 API 函數,我們可以在 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),比如 VB 提供的 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 <> "outside" Then
.Caption = "outside"
End If

'鼠標指針在按鈕上,捕獲他但鼠標移出是我們將收到鼠標事件
SetCapture .hwnd

Else
.Caption = "inside"
End If
End With
End Sub 


主站蜘蛛池模板: 色综合久久综合网 | 无码中文字幕乱在线观看 | 又粗又大又爽又紧免费视频 | 天天干夜夜爽天天操夜夜爽视频 | 一级女人毛片人一女人 | 亚洲天堂一区二区 | 青草视频网站 | 深夜视频在线播放视频在线观看免费观看 | 少妇激情av一区二区 | 午夜不卡在线 | 一二三四免费影院 | 天天操狠狠操夜夜操 | 亚洲资源在线 | 亚洲免费片 | 速度与激情9下载 | 四虎永久免费地址在线网站 | 日本大片在线 | 日本zzzwww| 青草影院在线观看免费版 | 欧美一级三级在线观看 | 热综合一本伊人久久精品 | 深夜爽爽福利gif在线观看 | 亚洲 欧美 自拍 另类 欧美 | 日韩三级小视频 | 日韩精品视频免费网址 | 婷婷狠狠操 | 午夜人成 | 天天做夜夜操 | 天堂欧美 | 手机看片自拍自拍自拍自视频 | 日韩欧美亚洲每日更新网 | 一级一级一级毛片免费毛片 | 天天色综合2 | 天天干天天操天天 | 亚洲国产精品欧美日韩一区二区 | 日韩毛片基地 | 欧美亚洲国产专区在线app | 热热热热色 | 日日噜噜噜夜夜爽爽狠狠 | 亚洲欧美日韩在线2020 | 人人插人人舔 |