MsgBox若干秒后自动关闭的方法

  主題:如何設定   MsgBox   在若干時間之後若無回應則自動關閉?    
  來源:Ask   the   Visual   Basic   Pro    
  版本:VB6   /   VB5   /   VB4-32    
   
  --------------------------------------------------------------------------------  
     
   
  在我們的印象中,VB   所提供的   MsgBox   是一個強制回應的視窗,您一定要按了其中的某一個   CommandButton   之後,它才會關閉!但是在某些軟体中,我們會看到,明明是使用系統的   MsgBox,可是您如果不理它,幾秒鐘之後,它就自行關閉了!別人是如何做到的呢?這個問題偶而會出現在討論區中,有的人會回答:  
   
  只要自己做一個類似   MsgBox   的視窗,就可以自己用   Timer   來控制這個視窗何時要關閉了!  
   
  但是,其實不用這麼麻煩的,只要使用系統的   MsgBox   再加一個   Timer   就可以控制了!  
   
  我們都知道   MsgBox   可以設定成很多不同的樣子,可以有很多不同的圖示,不同的按鈕,其中控制按鈕的部份,可以設定的常數如下:  
   
  常數           值   說明    
  vbOKOnly           0   只顯示   OK   按鈕。    
  VbOKCancel           1   顯示   OK   及   Cancel   按鈕。    
  VbAbortRetryIgnore           2   顯示   Abort、   Retry   及   Ignore   按鈕。    
  VbYesNoCancel           3   顯示   Yes、No   及   Cancel   按鈕。    
  VbYesNo           4   顯示   Yes   及   No   按鈕。    
  VbRetryCancel           5   顯示   Retry   及   Cancel   按鈕。    
   
  為什麼要特別提到   MsgBox   的常數呢?因為下面我們要告訴您的方法,還是有一點點限制的!當您設定的常數是   VbAbortRetryIgnore   或   VbYesNo   時,下面的方法也是沒用的!  
   
  '在表單的宣告區中加入以下的宣告  
   
  Private   Declare   Function   FindWindow   Lib   "user32"   Alias   "FindWindowA"   _  
  (ByVal   lpClassName   As   String,   ByVal   lpWindowName   As   String)   As   Long  
   
  Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   _  
  (ByVal   hWnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   _  
  lParam   As   Any)   As   Long  
   
  Private   Const   WM_CLOSE   =   &H10  
  Private   Const   MsgTitle   As   String   =   "Test   Message"  
  '在表單中加入一個   CommandButton   及一個   Timer   控制項,加入以下程式碼:  
   
  Private   Sub   Command1_Click()  
        Dim   nRet   As   Long  
        Timer1.Interval   =   3000  
        Timer1.Enabled   =   True  
        nRet   =   MsgBox("若您不回應的話,3   秒後此   MsgBox   會自動關閉",   64,   MsgTitle)  
        Timer1.Enabled   =   False  
  End   Sub  
   
  Private   Sub   Timer1_Timer()  
        Dim   hWnd   As   Long  
        hWnd   =   FindWindow(vbNullString,   MsgTitle)  
        Call   SendMessage(hWnd,   WM_CLOSE,   0,   ByVal   0&)  
  End   Sub  
  好了,很簡單吧!您執行程式時,當   MsgBox   出現   3   秒之後,就會自動關閉了!  
  注意:此方法的限制說明:  
   
  1、當常數設定為   VbAbortRetryIgnore   或   VbYesNo   時,無效!  
  2、在   Design   Time   時,無效,必須   Make   EXE   之後才有效!

 

已经不知道出处,从这个帖子中粘贴下来

http://topic.csdn.net/t/20040506/18/3036843.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值