• <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)下載排行

        主站蜘蛛池模板: 美女视频黄免费亚洲| 亚洲国产精品一区二区第一页免| 国产亚洲AV手机在线观看| 最好2018中文免费视频| 日产乱码一卡二卡三免费| 亚洲国产精品无码中文lv| 岛国片在线免费观看| 天天综合亚洲色在线精品| 国产成人精品男人免费| 春意影院午夜爽爽爽免费| 亚洲一区二区三区在线| 最近高清中文字幕免费| 亚洲嫩草影院在线观看| 成人特黄a级毛片免费视频| 亚洲成_人网站图片| 日韩在线视频免费看| 免费的黄色的网站| 亚洲中文字幕无码一区二区三区| 免费一区二区无码东京热| 亚洲人成网站影音先锋播放| 最近中文字幕高清免费中文字幕mv | 免费黄色电影在线观看| 91精品国产亚洲爽啪在线影院| 51在线视频免费观看视频| 亚洲综合激情五月色一区| 免费一级毛片一级毛片aa| 中文字幕无线码免费人妻| 亚洲国产精品久久久久婷婷老年| 午夜国产精品免费观看| 在线91精品亚洲网站精品成人| 亚洲综合另类小说色区色噜噜| 一区二区三区福利视频免费观看| 亚洲不卡中文字幕| 亚洲综合精品网站在线观看| 精品国产免费人成电影在线观看 | 亚洲国产精品一区| 最近中文字幕无吗高清免费视频| 手机永久免费的AV在线电影网| 久久精品亚洲视频| 国产高清视频在线免费观看| 大地资源中文在线观看免费版|