我有个办法,不需要这么麻烦,
例如你有个主窗体,你想在这个主窗体的某个事件发生时弹出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取消就可以了.
例如你有个主窗体,你想在这个主窗体的某个事件发生时弹出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取消就可以了.
msgbox("Does it work?")
不知道你给我的方法之前,你有没有试过,按照自己的想法运行一次就知道了.不行!!!不知道,你有没有理解,在用msgbox时应用程序全都被挂起了!!这就是说,时钟计时控件也
将无法进行工作了!!!
你这样可能是多走了一次弯路.
不过谢谢你的热心帮助!!!
不会呀,我以前为了让自己看书考高程,就编了个小程序,让它提醒我,
他也是启动一个timer及一个messagebox,并能在一定时间内自动关掉,
例如我在学习时间内开机了,则5秒内它自动关机。哦自动关机了
但我可以肯定timer不会停的呀。
你可以自己用一个Form仿造一个Magbox,
以模式窗口的方式弹出,
然后在你自己做的这个假的Msgbox内部装一个Timer
不就行了?
可以设一个全局变量做标志,
在调假Msgbox前将其设为Ture,
在假Msgbox的Form_Unload中将其置False在主程序中做个循环去等就好了
他要求的就是要系统的那个msgbox,
如果是自己做的,那他还用问??
我已经在前几天就搞定了,谢谢大家!
不过我要谢谢wxj_lake!wxj_lake的方法是用api的settimer等函数来解决的。
我已经在另一个贴子中给出了分数!我在这里也给大家各送一点分!