原来用api方式是可行,只是我适合我的情况。我的解决方法是这样的: 我的程序与硬件通信。在程序一起动,就与硬件建立连接,随时准备接收硬件的数据,并可能弹出消息提示框。如果有msgbox,时与硬件的通信中断。用api方式,一开始测试是可行的,但后来就如论如何也不可以。 后来我把与硬件的通信,和弹出消息提示框放在activeX dll中,信息提示框用窗体来代替msgbox.现在测试一切正常.我的主程序的弹出消息提示框用api来实现,如果用msgbox会提示错误,不可用。下面的可以代替msgboxPrivate 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 '================================================================================ '=== 函数功能:弹出对话框,不阻塞程序执行 '=== 参 数: Prompt As String,提示语句 Optional Buttons As VbMsgBoxStyle,类型 ' Optional Title As Variant 对话框标题 '=== 返 回 值:结果 '=== 开 发 者: '=== 修改纪录: '=== '=============================================================================== Public Function MsgBox2(Prompt As String, Optional Buttons As VbMsgBoxStyle, _ Optional Title As Variant) As VbMsgBoxResult If IsMissing(Title) Then Title = App.Title MsgBox2 = MessageBox(Screen.ActiveForm.Hwnd, Prompt, Title, Buttons) End Function
如果有好的方法,我不想用窗体。
每次new一个就可以了
1.加一个timer,把要做的事在timer里完成。
2.把程序搞成多线程
我的程序与硬件通信。在程序一起动,就与硬件建立连接,随时准备接收硬件的数据,并可能弹出消息提示框。如果有msgbox,时与硬件的通信中断。用api方式,一开始测试是可行的,但后来就如论如何也不可以。
后来我把与硬件的通信,和弹出消息提示框放在activeX dll中,信息提示框用窗体来代替msgbox.现在测试一切正常.我的主程序的弹出消息提示框用api来实现,如果用msgbox会提示错误,不可用。下面的可以代替msgboxPrivate 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
'================================================================================
'=== 函数功能:弹出对话框,不阻塞程序执行
'=== 参 数: Prompt As String,提示语句 Optional Buttons As VbMsgBoxStyle,类型
' Optional Title As Variant 对话框标题
'=== 返 回 值:结果
'=== 开 发 者:
'=== 修改纪录:
'===
'===============================================================================
Public Function MsgBox2(Prompt As String, Optional Buttons As VbMsgBoxStyle, _
Optional Title As Variant) As VbMsgBoxResult
If IsMissing(Title) Then Title = App.Title
MsgBox2 = MessageBox(Screen.ActiveForm.Hwnd, Prompt, Title, Buttons)
End Function
每次new一个就可以了我是一位VB初学者,不知道具体是怎样写的?希望哪位能提供一下代码?
set frm =new yourForm '如set frm =new form1
'初始化操作
'frm.xxx=xxxxfrm.show