亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        讓VB應(yīng)用程序支持鼠標(biāo)滾輪

        字號:

        ---- 一、提出問題
            ---- 自從1996年微軟推出Intellimouse鼠標(biāo)后,帶滾輪的鼠標(biāo)開始大行其道,支持鼠標(biāo)滾輪的應(yīng)用軟件也越來越多。但我感到奇怪,為什么VB到6.0本身仍然不支持鼠標(biāo)滾輪,VF可是從5.0就提供MouseWheel事件了。
            ---- 如何讓VB應(yīng)用程序支持鼠標(biāo)滾輪?MSDN上有一篇解決VB下應(yīng)用Intellimouse鼠標(biāo)的文章,它解決這一問題的方法是通過一個幾十K的第三方控件實現(xiàn)的,可惜該控件沒有源代碼。況且為了支持鼠標(biāo)滾輪使用一個第三方控件,好像有點得不償失。本文給出用純VB實現(xiàn)這一功能的方法。
            ---- 二、解決問題
            ---- 我們知道VB應(yīng)用程序響應(yīng)的Windows傳來的消息,需要通過VB解釋??墒呛懿恍遥m然VB解釋所有得消息,卻只讓用戶程序在事件中處理部分消息,VB自己處理其他的消息,或者忽略這些消息。
            ---- 在VB5.0以前應(yīng)用程序無法越過VB直接處理消息,微軟從VB5.0開始提供AddressOf 運算符,該運算符可以讓用戶程序?qū)⒑瘮?shù)或者過程的地址傳遞給一個API函數(shù)。這樣我們就可以在VB應(yīng)用程序中編寫自己的窗口處理函數(shù),通過AddressOf 運算符將在VB中定義的窗口地址傳遞給窗口處理函數(shù),從而繞過VB的解釋器,自己處理消息。事實上,該方法可用于在VB中處理任何消息。
            ---- 實現(xiàn)應(yīng)用程序支持鼠標(biāo)滾輪的關(guān)鍵是,捕獲鼠標(biāo)滾輪的消息 MSH_MOUSEWHEEL、WM_MOUSEWHEEL。其中MSH_MOUSEWHEEL是為95準(zhǔn)備的,需要Intellimouse驅(qū)動程序,而WM_MOUSEWHEEL是目前各版本W(wǎng)indows(98/NT40/2000)內(nèi)置的消息。本文主要處理WM_MOUSEWHEEL消息。下面是WM_MOUSEWHEEL的語法。
             WM_MOUSEWHEEL
             fwKeys = LOWORD(wParam); /* key flags */
             zDelta = (short) HIWORD(wParam);
             /* wheel rotation */
             xPos = (short) LOWORD(lParam);
             /* horizontal position of pointer */
             yPos = (short) HIWORD(lParam);
             /* vertical position of pointer */
            ---- 其中:fwKeys指出是否有CTRL、SHIFT、鼠標(biāo)鍵(左、中、右、附加)按下,允許復(fù)合。zDelta傳遞滾輪滾動的快慢,該值小于零表示滾輪向后滾動(朝用戶方向),大于零表示滾輪向前滾動(朝顯示器方向)。lParam指出鼠標(biāo)指針相對屏幕左上的x、y軸坐標(biāo)。
            ---- 滾輪按鈕相當(dāng)于普通的三鍵鼠標(biāo)的中鍵,根據(jù)滾輪按鈕的動作,Windows分別發(fā)出WM_MBUTTONUP、WM_MBUTTONDOWN、WM_MBUTTONDBLCLK消息,這些消息VB已經(jīng)在鼠標(biāo)事件中支持。