VB讓程序在后臺運行

發表于:2007-07-14來源:作者:點擊數: 標簽:
比如說,我們在表單上設置了一個計時器控件,這個定時器的任務就是在表單上顯示當前的時間,同時設置當程序運行時啟動定時器。程序運行后,當前的時間將在表單上實時地顯示出來。但如果我們同時設置一個command按鈕,并設計它的click事件為調用msgbox顯示一
    比如說,我們在表單上設置了一個計時器控件,這個定時器的任務就是在表單上顯示當前的時間,同時設置當程序運行時啟動定時器。程序運行后,當前的時間將在表單上實時地顯示出來。但如果我們同時設置一個command按鈕,并設計它的click事件為調用msgbox顯示一個隨意的信息。當我們點擊這個按鈕后,就會出現一個對話框,這時,請留心看看原本顯示當前事件的那個位置,你發現了什么?呵呵,時間不再更新顯示了 ;-( 當再次點擊對話框的按鈕,使之消失時,時間又恢復正常,繼續實時顯示了。

   問題已經描述清楚了。我們將要解決的就是,當出現對話框時,讓時間仍能正確地實時顯示,也就是說,讓程序在后臺繼續運行。

   使用API函數MessageBox

   使用VB自帶的函數MSGBOX是完成不了我們期望的后臺程序運行了,在上面我們已經談到。為了解決這個問題,這里提供一個簡單并且很好用的技巧:使用Windows API函數MessageBox。它產生的效果及外觀與使用MSGBOX基本一樣,但卻不會中止后臺程序的繼續運行。

   引用MessageBox

   為了使用這個函數,必須首先在代碼的最前端設置引用信息,請輸入以下的代碼:

   Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long  

   例程代碼

   接著,在表單上添加1個定時器控件,2個按鈕控件,1個label控件。定時器控件控制顯示當前時間,一個命令按鈕調用MSGBOX對話框,另一個命令按鈕調用MessageBox函數,Label存放當前時間。你可以通過點擊不同的命令按鈕,查看label中顯示的時間是否有停止的現象。

   代碼如下:

   Private Sub Command1_Click()  
MsgBox "請看看時間顯示是否停止了!"  
End Sub  

   Private Sub Command2_Click()  
MessageBox Me.hwnd, "請注意,時間顯示沒有停止!", "API Call", _ vbOKOnly + vbExclamation  
End Sub  

   Private Sub Timer1_Timer()  
Label1.Caption = Time  
End Sub


   更多的設想

   上面的代碼是否很簡單? 的確這樣,使用API函數,有時能啟動意想不到但卻是很實用的效果。當然,你也可以編寫自己的對話框函數,這也不是很復雜,而且能更加細微地控制用戶的輸入。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97