是这样。
弹出一个MsgBox对话枢后,如果在用户1分钟内没有单击这个MsgBox。让这个
对话框自动消失。请问怎么实现.

解决方案 »

  1.   

    分太少了,呵呵,不过还是告诉你, 做个计数器,在弹出MSGBOX框的时候开始记数,时间到了,就UNLOAD MSGBOX,就可以了
      

  2.   

    楼上,你试试,当MSGBOX弹出来后,时间停止了
      

  3.   


    Option ExplicitPrivate 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 LongPrivate Const WM_CLOSE = &H10Private m_strMsgTitle As StringConst MB_DEFBUTTON1 = &H0&
    Const MB_DEFBUTTON2 = &H100&
    Const MB_DEFBUTTON3 = &H200&
    Const MB_ICONASTERISK = &H40&
    Const MB_ICONEXCLAMATION = &H30&
    Const MB_ICONHAND = &H10&
    Const MB_ICONINFORMATION = MB_ICONASTERISK
    Const MB_ICONQUESTION = &H20&
    Const MB_ICONSTOP = MB_ICONHAND
    Const MB_OK = &H0&
    Const MB_OKCANCEL = &H1&
    Const MB_YESNO = &H4&
    Const MB_YESNOCANCEL = &H3&
    Const MB_ABORTRETRYIGNORE = &H2&
    Const MB_RETRYCANCEL = &H5&Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As LongPrivate Sub cmdTest_Click()
        With Timer1
            .Interval = 2000
            .Enabled = True
        End With
        
        Dim i As Integer
        m_strMsgTitle = "OK"
        MessageBox Me.hwnd, m_strMsgTitle, m_strMsgTitle, MB_OK
        
    End SubPrivate Sub Timer1_Timer()
       Dim hwnd As Long
       Timer1.Enabled = False
       hwnd = FindWindow(vbNullString, m_strMsgTitle)
       Call SendMessage(hwnd, WM_CLOSE, 0, ByVal 0&)
    End Sub
      

  4.   

    MSGBOX是不收用户控制的,还是用MESSAGEBOX吧。可以用API控制
      

  5.   

    如果不想使用API,就自己做一个窗体,拿这个窗体当MSGBOX吧很简单的。
      

  6.   

    为Windows的标准对话框加上时间限制http://tips.vvsoft.com/vbeden/download/code_16/wdlg.zip
      

  7.   

    310、如何设定 MsgBox 在若干时间之后若无回应则自动关闭?在我们的印象中,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 LongPrivate 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 SubPrivate 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 之后才有效!
      

  8.   

    http://www.5ivb.net/down/30/5ivb_835.asp
      

  9.   

    pcwak(书剑狂生)
    老兄,我又见到你了啊哈哈现在还在搞VB啊
      

  10.   

    简单的办法自已做一个带有TIMER控件的Msgbox
      

  11.   

    回复人: pcwak(书剑狂生) ( ) 信誉:66  2005-04-22 11:02:00  得分: 0  
     
     
       楼上,你试试,当MSGBOX弹出来后,时间停止了
      
     
    ==================================
    在ide里是会停止,但做成exe之后就不会了
      

  12.   

    这个msgbox窗体必须要你的响应,自动关不了的,所以最好是自己做个窗体