• <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无码乱码国产麻豆穿越| 凹凸精品视频分类国产品免费| 亚洲精品无码永久中文字幕| 成在线人直播免费视频| 国产成人免费片在线观看| 亚洲人成色4444在线观看| 国内精品免费视频自在线| 亚洲AⅤ男人的天堂在线观看| 又黄又爽无遮挡免费视频| 日本黄页网址在线看免费不卡| 亚洲不卡AV影片在线播放| 一级做a爱片特黄在线观看免费看| 亚洲AV永久无码精品一区二区国产| 免费又黄又爽又猛大片午夜| 国产综合亚洲专区在线| 任你躁在线精品免费| 亚洲黄色在线视频| 成人免费a级毛片| 国产午夜亚洲精品不卡免下载| 亚洲av无码国产精品色在线看不卡| 成人a毛片视频免费看| 亚洲精品一品区二品区三品区| 免费成人高清在线视频| 亚洲精品中文字幕无乱码| 最近最新的免费中文字幕| 黄色a三级免费看| 亚洲AV综合色区无码一区| 国产91色综合久久免费| 亚洲av无码专区亚洲av不卡| 亚洲国产精品激情在线观看| 嫩草成人永久免费观看| 亚洲va在线va天堂va手机| 又大又粗又爽a级毛片免费看| 国产情侣久久久久aⅴ免费| 亚洲一区二区三区无码国产| 免费一级特黄特色大片在线观看| 72pao国产成视频永久免费| 亚洲欧洲国产日韩精品| 日本免费电影一区| 久久久久国产精品免费看| 亚洲av无码一区二区三区天堂|