CSDN博客

img smallboy_5

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

发表于2008/10/2 19:35:00  3310人阅读

分类: VB编程

  主題:如何設定   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 0

相关文章推荐

img
取 消
img