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

        當前位置:雨林木風下載站 > 技術開發(fā)教程 > 詳細頁面

        偵測離開Form進入其他程式

        偵測離開Form進入其他程式

        更新時間:2022-05-13 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(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)  
        '設定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)下載排行

        主站蜘蛛池模板: 四虎影视免费永久在线观看| 免费国产成人α片| www.黄色免费网站| 久久亚洲日韩精品一区二区三区| 三级毛片在线免费观看| 国产亚洲成人久久| 成年女性特黄午夜视频免费看| jjizz全部免费看片| 色婷婷亚洲十月十月色天| 日韩人妻无码精品久久免费一| 亚洲国产成人精品无码区在线观看| 久青草视频97国内免费影视| 亚洲乱码中文字幕久久孕妇黑人| 大地资源网高清在线观看免费| 亚洲AV区无码字幕中文色| 亚洲成人在线免费观看| 亚洲综合小说另类图片动图| 在线观着免费观看国产黄| 女人裸身j部免费视频无遮挡| 亚洲AV中文无码乱人伦| 野花香高清在线观看视频播放免费 | 在线免费播放一级毛片| 亚洲成av人在线视| 国产成人精品免费午夜app| 亚洲综合偷自成人网第页色| 又爽又黄无遮挡高清免费视频| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲国产精品无码久久久蜜芽| 免费不卡在线观看AV| 亚洲jjzzjjzz在线观看| 一本久到久久亚洲综合| 永久免费AV无码网站国产| 国产精品亚洲精品观看不卡| 亚洲精品无码久久毛片| 69视频免费观看l| 亚洲伊人久久大香线蕉AV| 亚洲爽爽一区二区三区| 1000部夫妻午夜免费| 日本黄页网址在线看免费不卡| 久久青青草原亚洲av无码app| 狼友av永久网站免费观看|