领导今天问我这样一个问题,在程序中,他想自己定义一个消息,然后由一个窗体激活另外一个窗体进行数据处理。目的是为了减少偶合。
问题1:程序应该怎么写。请给个例子,比如form1发出消息,form2截获这个消息后显示出来,并弹出msgbox“hello!”,或者有更好的方式。谢谢!
问题2:他这种想法对吗?有什么更好解决方法
问题1:程序应该怎么写。请给个例子,比如form1发出消息,form2截获这个消息后显示出来,并弹出msgbox“hello!”,或者有更好的方式。谢谢!
问题2:他这种想法对吗?有什么更好解决方法
解决方案 »
- VB里的LOC函数常用吗?
- 中文字体的问题,有请繁体系统的朋友
- 如何用快捷键调出一个服务的窗体。
- 为什么使用CreateObject("Word.Application")会出错?
- 一个不应该成为问题的问题,请各位帮忙!
- 控件MSComm是用来做什么的呢??
- 编译时出现 ‘错误429’等一类的提示,这是什么样的错误
- 关于outlook的问题????
- winsock传输文件时,可不可以传输excel,access等文件。怎么样做呢?
- 我安装的VB6.0,在保存文件时,出现的提示保存文件名是乱码,这是为什么?
- dbgrid控件的使用?答对高分(100)奉给!
- 怎样使 我的vb6识别access2000建的数据库
在接收消息的form 里加入
Dim WithEvents x As VBControlExtender
和他的时间处理过程
Private Sub x_ObjectEvent(Info As EventInfo)
然后再你的触发的form 里加入
Public Event RaiseVBInfo(ByVal sStr As String)
然后在需要触发的地方加入
RaiseEvent RaiseVBInfo("Trigger")
如果需要参数的话,加入参数,不需要的话就删掉。
详细的看MSDN吧:)
msgbox“hello!”
end sub
触发窗体
Public Event RaiseVBInfo(ByVal sStr As String)Private Sub Command1_Click()
Form2.Show
RaiseEvent ObjectEvent("")
End Sub
接收窗体
Dim WithEvents x As VBControlExtenderPrivate Sub x_ObjectEvent(Info As EventInfo)
MsgBox "hello!"
End Sub
' 设置新的窗口信息处理进程 '窗口进程 '窗口进程地址
OldWindowProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, AddressOf NewWindowProc)
' 恢复原来窗口信息处理进程.
SetWindowLong TheForm.hwnd, GWL_WNDPROC, OldWindowProc'''''' *********************************************
' 新的窗口进程
' *********************************************
Public Function NewWindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = My_Message Then 'My_Message 你定义的消息
msgbox "消息收到"
End If
'发送其余的消息到原先的窗口信息处理进程
NewWindowProc = CallWindowProc(OldWindowProc, hwnd, Msg, wParam, lParam)
End Function