我有个办法,不需要这么麻烦,
例如你有个主窗体,你想在这个主窗体的某个事件发生时弹出Msgbox框,而非自己做的那种.
这样吧,你另外做一个窗体,如form2,且form2的visible属性为false
在某个地方用如下语句
form2.left=-10000  '使其看不见
form2.show vbmodal,form1   '让人看上去好象是msgbox使主窗体不能点吉
然后在form2的onshow或onload事件里启动timer1和timer2
并在timer1中到规定时间则
form2.close即可
因为msgbox的父窗体是form2,所以当form2关闭时,msgbox自然也就关闭了.当然,如果你一定要用api来解决这个问题,也是可以的
可是不能用getactivewindow来获取那个msgbox框,因为别的应用程序可能会在前面,
最好是用
getwindow()api,我忘了具体参数了,不过里面有个NEXT和PREW选项,其中第一项为form1.hwnd即可获得msgbox的句柄,然后用postmessage给它发送一个enter确定 或esc取消就可以了.

解决方案 »

  1.   

    忘了一句,在form2的onshow或onload事件里还要有一句
    msgbox("Does it work?")
      

  2.   

    To gameboy999:
       不知道你给我的方法之前,你有没有试过,按照自己的想法运行一次就知道了.不行!!!不知道,你有没有理解,在用msgbox时应用程序全都被挂起了!!这就是说,时钟计时控件也
    将无法进行工作了!!!
    你这样可能是多走了一次弯路.
    不过谢谢你的热心帮助!!!
      

  3.   

    还忘了,只能在onshow里写代码,在onload里不行
      

  4.   

    to laozhuang:
    不会呀,我以前为了让自己看书考高程,就编了个小程序,让它提醒我,
    他也是启动一个timer及一个messagebox,并能在一定时间内自动关掉,
    例如我在学习时间内开机了,则5秒内它自动关机。哦自动关机了
    但我可以肯定timer不会停的呀。
      

  5.   

    你用Msgbox当然会把程序挂起了,
    你可以自己用一个Form仿造一个Magbox,
    以模式窗口的方式弹出,
    然后在你自己做的这个假的Msgbox内部装一个Timer
    不就行了?
      

  6.   

    至于你要让主程序挂起,
    可以设一个全局变量做标志,
    在调假Msgbox前将其设为Ture,
    在假Msgbox的Form_Unload中将其置False在主程序中做个循环去等就好了
      

  7.   

    to echofang:
    他要求的就是要系统的那个msgbox,
    如果是自己做的,那他还用问??
      

  8.   

    http://210.75.132.33/lakes/detail.asp?id=134定制 MessageBox 的式样
      

  9.   

    wxj_like的例子是最好的,具体说明如下:控制MessageBox,包括定时关闭、居中于窗体和改变字体三种效果。很多国外的Vb站点都有。
      

  10.   

    各位老兄:
        我已经在前几天就搞定了,谢谢大家!
        不过我要谢谢wxj_lake!wxj_lake的方法是用api的settimer等函数来解决的。
    我已经在另一个贴子中给出了分数!我在这里也给大家各送一点分!