请问一下大家,在VB里面怎么给某个窗口或者控件发送消息!
已经怎么编辑该窗口或者该控件的消息响应事件!如果可以的话,请给个简单例子,
谢谢!!!在线等待!

解决方案 »

  1.   

    关键就是重写窗体的回调函数处理要处理的消息,其他的交给vb自己的窗体回调函数去作.
    不过定义的这个窗体的回调函数必须要在模块中定义才行,在窗体的Form_load函数中进行调用.下面是例子,相关的常量以及api函数的定义我就不写拉.'这个函数在module中进行定义
    Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    ' 我们也进行消息过滤,不过我们指拦截我们感兴趣的消息
    ' 其他消息我们懒得处理,交给 VB 默认的窗口函数去处理吧。
    Select Case uMsg
    Case WM_COPYDATA
    ......
    Case 其他消息
    end select' 这里又是关键,因为其他我们不关心的消息我们自己不处理,所以必须由 VB 的默认处理函数处理
    ' lpPrevWndProc 其实就是一个函数指针,它指向 VB 默认窗口函数
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
    End Function
    '以上是module中定义的窗体的回调函数.下面是窗体对其调用.Private Sub Form_Load()
        gHW = Me.hwnd ' 保存窗体的句柄
        ' 下面是关键,完成两个工作:1、将我们自己的全局函数替换为新的窗体回调函数
        ' 2、保存原来的 VB 默认窗户口函数地址
        lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, AddressOf WindowProc)
    End Sub
      

  2.   

    我也学的是VB,但是我没有遇到你的这种问题!什么是给控件或窗体发消息?请大哥们指教一下!
    看完你的VB的问题,我感觉我学的VB是不是和你们的不一样,我上的是北大青鸟程序员,为什么我看不懂?是不是我学的不专呀!!!
      

  3.   

    编辑处理响应事件,三楼说得很清楚了。
    要说明的就是VB本身只能做进程内的。给窗口发消息用SendMessage函数,下面是说明。
    发送什么消息要具体情况具体分析了。SendMessage, SendMessageBynum, SendMessageByString VB声明 
    Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
    Declare Function SendMessageBynum& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
    Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) 
    说明 
    调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, SendMessageByString是该函数的“类型安全”声明形式 
    返回值 
    Long,由具体的消息决定 
    参数表 
    参数 类型及说明 
    hwnd Long,要接收消息的那个窗口的句柄 
    wMsg Long,消息的标识符 
    wParam Long,具体取决于消息 
    lParam Any,具体取决于消息 
      

  4.   

    4楼的,用vb一般作高层应用,所以碰不到消息这些win32的东西.
    但是如果接触到底层一点的东西,比如要和其他程序交互,就需要用到消息了.
    因为vb本身的特长不是干这个,所以一般讨论得少,我也是找了好久才找到的,呵呵.