当前位置:编程学习 > VB >>

vb.net使用postmessage发送自定义消息

VB.NET中如何向VC中使用postmessage发送自定义消息,现在我要处理接收的数据,希望用POSTMESSAGE来处理这些数据, --------------------编程问答-------------------- 你可以定义自己的消息,WM_USER作为基数,往上你就自己定义了。

比如 const WM_妈妈喊你吃饭 = WM_USER + 100 --------------------编程问答-------------------- 那要怎么与处理函数关联起来呢,我以前是有用VC写过,postmessage(this,wm_user+100,1,0),这样就会跳转会与WM_USER+100相关联的函数中去执行,那这一步在VB中是要如何实现呢? --------------------编程问答-------------------- vb使用POSTMESSAGE如何传递多个参数,3个以上吧 --------------------编程问答--------------------
引用 2 楼 B360749456 的回复:
那要怎么与处理函数关联起来呢,我以前是有用VC写过,postmessage(this,wm_user+100,1,0),这样就会跳转会与WM_USER+100相关联的函数中去执行,那这一步在VB中是要如何实现呢?


VB无法直接控制消息循环,需要一种称之为SubClass(子类化)的技法。

思路就是通过SetWindowLong修改窗口函数,然后挂钩自己的消息处理程序去处理自己的消息。

具体 google VB 子类化 setwindowlong --------------------编程问答--------------------
引用 2 楼 B360749456 的回复:
那要怎么与处理函数关联起来呢,我以前是有用VC写过,postmessage(this,wm_user+100,1,0),这样就会跳转会与WM_USER+100相关联的函数中去执行,那这一步在VB中是要如何实现呢?


不好意思,看错了,你用的是VB.NET。那就简单了。

重写窗体的 WndProc 虚函数就可以了。 --------------------编程问答-------------------- 嗯,我现在重写了WNDPROC了,但是我需要在处理函数中处理一些STRING类型的数据,请问要怎么实现参数的传递呢?
这些参数的值的是在变化的,我用全局变量,但效果不好,去处理的时候,STRING值已经发生了改变 --------------------编程问答-------------------- 求帮助,,求帮助 --------------------编程问答-------------------- http://bbs.csdn.net/topics/290028692 --------------------编程问答--------------------

Public Const WM_CHAR = &H102
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'将一个字符串通过PostMessage传送出去
Public Sub subPostString(ByVal lngHandle As Long, ByVal strP As String)
    Dim intP As Integer
    Dim intK As Integer
    Dim lngAsc As Long
    Dim lngP As Long
    Dim strT As String
On Error GoTo errSub
    For intP = 0 To Len(strP) - 1
        strT = Mid(strP, intP + 1, 1)
        If Asc(strT) <= 0 Then
            lngAsc = AscW(StrConv(strT, 128))
            If lngAsc < 0 Then
                lngAsc = lngAsc + 65536 '2^16
            End If
        Else
            lngAsc = Asc(strT)
        End If
        lngP = PostMessage(lngHandle, WM_CHAR, lngAsc, 0)
    Next intP
'    Call subDelay(10)
'    lngP = PostMessage(lngActiveWindow, WM_LBUTTONDOWN, MK_LBUTTON, 0)
    Exit Sub
errSub:

End Sub
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,