• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        偵測離開Form進(jìn)入其他程式

        偵測離開Form進(jìn)入其他程式

        更新時間:2022-05-13 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        雖然Form有Activate與DeActivate的Events,但是這兩個Events只對form的Focus是在  
        同一個Process不同F(xiàn)orm之間的切換有效,如果我們在Form1,而Click其他的Process,  
        則Form1并不會產(chǎn)生DeActivate的Events,相同的,由其他的Process 回到Form1時,也  
        不會產(chǎn)生Activate的Events。唯一能得知的便是透過WM_ACTIVATE,其LowWord of wParam  
        有以下叁個值:  
          WA_ACTIVE       Activated by some method other than a mouse click  
          WA_CLICKACTIVE  Activated by a mouse click.  
          WA_INACTIVE     Deactivated  
        透過Subclassing的技巧便可來解決這個問題  

        '以下在.bas  
        Option Explicit  

        Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _  
          (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long  
        Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _  
          (ByVal hwnd As Long, ByVal nIndex As Long) As Long  
        Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _  
          (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _  
           ByVal wParam As Long, ByVal lParam As Long) As Long  

        Public Const GWL_WNDPROC = (-4)  
        Public Const WM_ACTIVATE = &H6  
        Public Const WA_ACTIVE = 1  
        Public Const WA_CLICKACTIVE = 2  
        Public Const WA_INACTIVE = 0  


        Public preWinProc As Long  

        Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _  
                                 ByVal wParam As Long, ByVal lParam As Long) As Long  
        Dim fActive As Integer  
        If Msg = WM_ACTIVATE Then  
            '取得wParam的LowWord  
            fActive = CInt(wParam And &HFFFF)  
            If fActive = WA_INACTIVE Then  
               Debug.Print "InActive "  
            Else  
               Debug.Print "Active"  
            End If  
        End If  
        '將之送往原來的Window Procedure  
        wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)  
        End Function  

        '以下在form  
        Option Explicit  
        Private Sub Form_Activate()  
        Debug.Print "Event Activate"  
        End Sub  

        Private Sub Form_Deactivate()  
        Debug.Print "Event DeActivate"  
        End Sub  

        Private Sub Form_Load()  
        Dim ret As Long  
        '記錄原本的Window Procedure的位址  
        preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)  
        '設(shè)定Combo1的window Procedure到wndproc  
        ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)  
        End Sub  

        Private Sub Form_Unload(Cancel As Integer)  
        Dim ret As Long  
        '取消Message的截取,而使之又只送往原來的Window Procedure  
        ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)  
        End Sub

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 成人a毛片视频免费看| 香蕉大伊亚洲人在线观看| 午夜在线亚洲男人午在线| 免费无码精品黄AV电影| 亚洲春色在线观看| 日本免费网址大全在线观看| 老司机亚洲精品影院| 99久久99久久免费精品小说| 亚洲视频在线一区二区三区| 最近免费2019中文字幕大全| 亚洲精品不卡视频| 久久精品a一国产成人免费网站| 亚洲国产精品自在自线观看| 国产精品国产自线拍免费软件| 欧洲亚洲国产精华液| 免费人成视频x8x8入口| 四虎精品成人免费视频| 亚洲色婷婷六月亚洲婷婷6月| 国内精品久久久久影院免费 | 在线观看永久免费| 亚洲韩国在线一卡二卡| 成人免费a级毛片无码网站入口| 亚洲色中文字幕在线播放| 国产一区二区免费在线| free哆拍拍免费永久视频| 亚洲国产精品免费视频| 美女视频黄的全免费视频网站| 久久亚洲精品无码网站| 久久影院亚洲一区| 亚洲免费视频播放| 亚洲熟妇丰满xxxxx| 区久久AAA片69亚洲| 亚州免费一级毛片| 亚洲av无码成人精品国产| 国产亚洲综合色就色| 777爽死你无码免费看一二区 | 一本久久A久久免费精品不卡| 久久久久久亚洲av成人无码国产| 在线观看日本免费a∨视频| aaa毛片免费观看| 亚洲香蕉久久一区二区|