亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦>學(xué)習(xí)電腦>電腦硬件知識(shí)>鍵盤(pán)鼠標(biāo)>

      鼠標(biāo)APi函數(shù)

      時(shí)間: 沈迪豪908 分享

        愛(ài)學(xué)習(xí)的小伙伴們,你們知道什么是鼠標(biāo)APi函數(shù)嗎?不知道的話(huà)跟著學(xué)習(xí)啦小編一起來(lái)學(xué)習(xí)了解什么是鼠標(biāo)APi函數(shù)。

        鼠標(biāo)APi函數(shù)

        得到當(dāng)前鼠標(biāo)指針的坐標(biāo):GetCursorPos函數(shù)

        聲明:

        public Type POINTAPI

        x As Long

        y As Long

        End Type

        Public Declare Function GetCursorPos Lib "user32" _

        (lpPoint As POINTAPI) As Long 參數(shù)缺省為byref指針傳遞

        調(diào)用:先聲明一個(gè)自定義類(lèi)型變量: Dim z As POINTAPI

        Private Sub Timer1_Timer()

        GetCursorPos z 注:這里z是引用地址傳遞,其值改變,就象"返回值"

        Label1.Caption = z.x

        Label2.Caption = z.y

        End Sub

        參數(shù)lpPoint返回鼠標(biāo)在屏幕上坐標(biāo)(不限于程序窗體),如將鼠標(biāo)指針移到屏幕左上角時(shí),z.x=0,z.y=0,而鼠標(biāo)移到屏幕右下角時(shí),z.x=639;z.y=477

        ===========================================================

        設(shè)置鼠標(biāo)在屏幕上的坐標(biāo) : SetCursorPos函數(shù)

        聲明:

        Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

        調(diào)用如:Private Sub Command1_Click()

        Call SetCursorPos(600, 100) 將鼠標(biāo)定位到屏幕(600,100)處。

        End Sub

        很簡(jiǎn)單,注:屏幕是以象素為單位的(與屏幕分辨率設(shè)定有關(guān))。不是緹。

        ==========================================================

        自動(dòng)按下鼠標(biāo)按紐:mouse_event過(guò)程函數(shù)

        該過(guò)程能在程序中模擬手工按下或抬起鼠標(biāo),移動(dòng)鼠標(biāo)的操作,聲明:

        Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

        一般只用它的第1個(gè)參數(shù),指明按下或抬起哪個(gè)按紐,如果要模擬鼠標(biāo)移動(dòng),則要用到第2,3個(gè)參數(shù)dx和dy, 而最后面兩個(gè)參數(shù)始終不用。

        第1個(gè)參數(shù)dwFlags的可能設(shè)置值如下:

        MOUSEEVENTF_LEFTDOWN=&H2: 模擬鼠標(biāo)左鍵按下

        MOUSEEVENTF_LEFTUP :模擬鼠標(biāo)左鍵抬起

        MOUSEEVENTF_RIGHTDOWN: 模擬鼠標(biāo)右鍵按下

        MOUSEEVENTF_RIGHTUP :模擬鼠標(biāo)右鍵抬起

        MOUSEEVENTF_ABSOLUTE=&H8000: 由參數(shù)dx和dy指定鼠標(biāo)坐標(biāo)系統(tǒng)中的一個(gè)絕對(duì)位置。在鼠標(biāo)坐標(biāo)系統(tǒng)中,屏幕在水平和垂直方向上均勻分割成65535×65535個(gè)單元

        MOUSEEVENTF_MOVE=&H1 :移動(dòng)鼠標(biāo)

        調(diào)用如:在屏幕上指定位置按下鼠標(biāo)左鍵:

        Public Const MOUSEEVENTF_LEFTDOWN = &H2

        Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

        Private Sub Timer1_Timer()

        SetCursorPos 300, 20

        mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&

        End Sub

        模擬鼠標(biāo)移動(dòng)需要設(shè)置其dx和dy參數(shù)來(lái)確定鼠標(biāo)位置,這時(shí)第1個(gè)參數(shù)用MOUSEEVENTF_MOVE加上MOUSEEVENTF_ABSOLUTE組合,如下:

        Public Const MOUSEEVENTF_MOVE = &H1

        Public Const MOUSEEVENTF_ABSOLUTE = &H8000

        mouse_event MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, 65535, 65535, 0&, 0& '移動(dòng)鼠標(biāo)

        mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0& '按下鼠標(biāo)

        這樣可省去用SetCursorPos函數(shù),不過(guò)它不以象素為度量單位,而是將長(zhǎng)寬分別平分為65535個(gè)鼠標(biāo)位置點(diǎn),要注意。

        補(bǔ)充說(shuō)明:

        參數(shù)dx-- Long,根據(jù)是否指定了MOUSEEVENTF_ABSOLUTE標(biāo)志,指定水平方向的絕對(duì)位置或相對(duì)運(yùn)動(dòng)

        參數(shù)dy-- Long,根據(jù)是否指定了MOUSEEVENTF_ABSOLUTE標(biāo)志,指定垂直方向的絕對(duì)位置或相對(duì)運(yùn)動(dòng)

        ==============================================

        限制鼠標(biāo)活動(dòng)區(qū)域函數(shù):ClipCursor函數(shù)

        限制光標(biāo)只能在參數(shù)lpRect給出的矩形區(qū)域內(nèi)運(yùn)動(dòng)。聲明:

        Public Declare Function ClipCursor Lib "user32" (lpRect As RECT) As Long

        參數(shù)lpRect聲明為RECT型,RECT的聲明如下:

        Public Type RECT

        Left As Long

        Top As Long Left,Top為左上角坐標(biāo)。

        Right As Long

        Bottom As Long Right,Bottom為右下角坐標(biāo)。

        End Type

        注:以上坐標(biāo)使用的是屏幕坐標(biāo)。

        調(diào)用如:

        Dim lxnRect As RECT

        Private Sub Form_Click()

        Static a As Boolean

        a = Not a

        If a = True Then 活動(dòng)范圍為Form1

        lxnRect.Left = Form1.Left \ Screen.TwipsPerPixelX

        lxnRect.Top = Form1.Top \ Screen.TwipsPerPixelY

        lxnRect.Right = (Form1.Left + Form1.Width) \ Screen.TwipsPerPixelX

        lxnRect.Bottom = (Form1.Top + Form1.Height) \ Screen.TwipsPerPixelY

        ClipCursor lxnRect

        Else 活動(dòng)范圍為全屏幕

        lxnRect.Left = 0

        lxnRect.Top = 0

        lxnRect.Right = Screen.Width \ Screen.TwipsPerPixelX

        lxnRect.Bottom = Screen.Height \ Screen.TwipsPerPixelY

        ClipCursor lxnRect

        End If

        End Sub

        上例是這樣的,在窗體上單擊時(shí),鼠標(biāo)活動(dòng)限在此窗體,再單擊,則恢復(fù)為全屏幕活動(dòng)范圍。

        注:在VB中,所有尺寸都化為緹了(包括screen對(duì)象的width,height),而在A(yíng)PI中,所有尺寸都為象素,因此,要統(tǒng)一單位,用轉(zhuǎn)換比例screen對(duì)象的TwipsPerPixelX和TwipsPerPixelY(好象值就等于15。不知是否固定不變。)

        ======================================

        顯示/隱藏鼠標(biāo)指針:ShowCursor函數(shù)

        該函數(shù)可用于隱藏鼠標(biāo),但鼠標(biāo)仍然可"看不見(jiàn)地移動(dòng)"。聲明:

        Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

        參數(shù)很簡(jiǎn)單:bShow--當(dāng)為true且"函數(shù)"返回值大于等于0時(shí),顯示指針,當(dāng)為false且"函數(shù)"返回值小于0時(shí),隱藏指針。

        注:該函數(shù)的函數(shù)返回值需要注意:它返回"顯示計(jì)數(shù)",windows維持著一個(gè)內(nèi)部顯示計(jì)數(shù);倘若bShow為T(mén)RUE,那么每調(diào)用一次這個(gè)函數(shù),計(jì)數(shù)就會(huì)遞增1;反之,如bShow為FALSE,則計(jì)數(shù)遞減1。只有在這個(gè)計(jì)數(shù)大于或等于0的情況下,指針才會(huì)顯示出來(lái)。而小于0時(shí)則隱藏,因此,不單是簡(jiǎn)單地把bShow設(shè)為false就可以了。不然要想再使指針顯示出來(lái),可能會(huì)遇到困難。如:

        Dim a As Boolean

        Private Sub Form_Click()

        a = False

        x = ShowCursor(a)

        Print x

        End Sub

        如果我們多次單擊form窗體,則x的值會(huì)變?yōu)?1,-2,-3,-4……這時(shí),如果再簡(jiǎn)單地把a(bǔ)改為true,則單擊1次時(shí)指針不會(huì)重顯,x的值會(huì)變?yōu)?3,-2,-1,0……只有多次單擊使x等于大于0的時(shí)候,指針才會(huì)重顯。

        ===========================================

        在VB中捕捉mouse_leave事件:SetCapture和ReleaseCapture函數(shù)

        SetCapture函數(shù):設(shè)置鼠標(biāo)捕獲到指定窗口,使該窗口接收所有鼠標(biāo)輸入。

        ReleaseCapture函數(shù):釋放鼠標(biāo)捕獲。

        聲明:

        Declare Function SetCapture Lib "user32"(ByVal hwnd As Long) As Long

        Declare Function ReleaseCapture Lib "user32"() As Long

        參數(shù):hwnd--要接收所有鼠標(biāo)輸入的窗口句柄。

        調(diào)用如(捕捉command2的mouseleave"事件":

        Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

        Text1.Text = X & "," & Y

        Dim MouseOver As Boolean

        MouseOver = (0 <= X) And (X <= Command2.Width) And (0 <= Y) And (Y <= Command2.Height) 這里要注意,一個(gè)控件的mouse類(lèi)事件返回的X,Y坐標(biāo)值是此控件自身的窗口坐標(biāo),不是Form的坐標(biāo)!所以左上角都是(0,0)-右下角(width,height).

        If MouseOver Then 當(dāng)鼠標(biāo)在command2上時(shí),

        Command2.BackColor = RGB(255, 255, 0)

        SetCapture Command2.hwnd 使command2窗口響應(yīng)鼠標(biāo)輸入。

        Else 當(dāng)鼠標(biāo)離開(kāi)時(shí),以下寫(xiě)mouseleave的內(nèi)容。

        Command2.BackColor = RGB(120, 120, 120)

        ReleaseCapture command2不再響應(yīng)鼠標(biāo)動(dòng)作

        End If

        End Sub

      鼠標(biāo)APi函數(shù)相關(guān)文章:

      1.網(wǎng)絡(luò)游戲外掛技術(shù)

      2.鍵盤(pán)事件的掛鉤監(jiān)控原理及其應(yīng)用探討論文

      3.Excel的命名功能

      4.32位win 7怎么用4G內(nèi)存

      1995890