关于定时关闭询问对话框的一点体会

原创 2004年02月26日 14:49:00

       用过瑞星杀毒软件的朋友都知道,他可以定时关闭询问对话框。询问对话框的实现很简单,调用vb中提供的msgbox就可以实现了,可是问题是询问对话框是模式对话框,不关闭它的话,下面的代码无法继续执行,这一点也多多少少给朋友们造成了一些困饶。那么怎么解决呢,我的方案是调用api函数messagebox代替msgbox,结合timer控件实现自动关闭,闲话少说,看代码,下面的代码演示了如何在10秒中之后关闭对话框(窗体上一个按钮,一个timer控件):

Option Explicit

Const 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 Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) 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 BM_CLICK = &HF5
Dim i As Long
Private Sub Command1_Click()
     Timer1.Enabled = True
     MessageBox Me.hwnd, "this is test", App.Title, MB_OK
     Timer1.Enabled = False
End Sub

Private Sub Form_Load()
    Timer1.Enabled = False
    Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()

    i = i + 1
    If i >= 10 Then
        Dim dlghwnd As Long
        Dim buttonhwnd As Long
        dlghwnd = FindWindow("#32770", App.Title)
        buttonhwnd = GetDlgItem(dlghwnd, 2) '其中的2,用spy++获得
        SendMessage buttonhwnd, BM_CLICK, 0&, ByVal 0&
    End If
   
End Sub

【Android开发】范例1-询问是否退出的对话框

根据之前学的Android对话框技术,来实现下面一个效果:界面有一个"退出"按钮,按下之后会弹出一个询问是否退出的提示对话框,单击"不"按钮,不退出游戏,单击"是的"按钮,将退出游戏。 接下来实现此...
  • u013517797
  • u013517797
  • 2015年04月13日 10:05
  • 1902

Delphi定时关闭各种对话框

{*******************************************************} {                                         ...
  • ainixiaozhuzi
  • ainixiaozhuzi
  • 2013年10月20日 14:10
  • 799

C#窗体退出事件提示对话框解决方案

最近刚刚学习C#,在登录父窗体主界面关闭事件写入代码:                         if (DialogResult.Yes == MessageBox.Show("是否...
  • u010209254
  • u010209254
  • 2016年08月15日 12:04
  • 1008

显示和关闭对话框

一、显示对话框 1.显示模式对话框: CDialogDemo dlg; dlg.DoModal(); 2.显示非模式对话框: CDialogDemo *dlg=new CDialogDe...
  • zxccaoya
  • zxccaoya
  • 2016年08月16日 18:23
  • 1162

mfc关闭模态dialog的正确方式

在模态对话框中: 正常的用户触发的OnOK 、OnCancel消息都是通过调用函数EndDialog去关闭模态对话框的,EndDialog函数并不立即清除对话框。而是设置一个标志,并且允许对话框应用...
  • yangyihongyangjiying
  • yangyihongyangjiying
  • 2015年03月20日 10:38
  • 4842

总结:MFC中一个对话框的关闭过程 .

说起来挺简单的,一个对话框关闭时要依次调用该类的DestroyWindow-OnDestroy-PostNcDestroy,根据关闭的方法不同,在这些函数之前会调用OnOK、OnCancle或者OnC...
  • lphbtm
  • lphbtm
  • 2016年02月24日 11:32
  • 1311

模态对话框与非模态对话的几种销毁方法与区别

模态对话框与非模态对话的几种销毁方法与区别  先着一个注意点,自己误识了好久: CloseWindow是一个函数,可以用来最小化指定的窗口,但并不销毁该窗口。 先说下模式对话框调用的原...
  • rankun1
  • rankun1
  • 2016年05月26日 16:00
  • 2139

Android系统对话框——自定义关闭

Android系统对话框——自定义关闭Dialog是我们在项目中经常用到的,5.x以后的Dialog也很好看,很安卓风,Android也给我们提供了新的包,低版本可以显示一样的效果。我们在使用的导入v...
  • q4878802
  • q4878802
  • 2016年04月15日 11:00
  • 10502

定时启动关闭程序---定时关闭tomcat

程序长时间运行 容易产生内存
  • q383965374
  • q383965374
  • 2014年11月07日 10:37
  • 2238

《服务的最佳实践》再实践——定时关闭程序

转载请注明出处:http://blog.csdn.net/chengbao315/article/details/50997218 最近读书读到了安卓的服务组件(再次推荐偶像的书,郭霖《第一行代码...
  • chengbao315
  • chengbao315
  • 2016年03月28日 13:30
  • 1289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于定时关闭询问对话框的一点体会
举报原因:
原因补充:

(最多只允许输入30个字)