c++的dll代码:
  char string1[1000]="第二窗口";
  ……
  //向vb窗口发送74消息
  SendMessage(m_hWnd,74,strlen(string1),(LPARAM)&string1);
  //dll标记1

vb的窗口函数处理代码:
      Private Sub Form_Load()
          Me.Caption = "我的窗口"
          …..
      End Sub
      Public Function WndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
          Dim a() As Byte, i As Long, str1 As String
          If 74 = uMsg Then
              ReDim a(wParam - 1)
              CopyMemory a(0), ByVal lParam, wParam
              str1 = StrConv(a, vbUnicode)
              Form1.Text1 = Form1.Text1 + Chr(13) + Chr(10) + str1
              WndProc = 0
          Else
              WndProc = CallWindowProc(GetProp(hWnd, OLDWNDPROC), hWnd, uMsg, wParam, lParam)
          End If

vb窗口程序加载了dll
为什么当dll运行到dll标记1的地方,vb窗口的标题有原来的"我的窗口"被改为:"第二窗口"?
我也尝试过用:12消息SendMessage(m_hWnd,12,strlen(string1),(LPARAM)&string1);可就要么得不到消息,要么跟上面一样?为什么?如何解决?

If 74 = uMsg Then
              ReDim a(wParam - 1)
              CopyMemory a(0), ByVal lParam, wParam
              str1 = StrConv(a, vbUnicode)
              Form1.Text1 = Form1.Text1 + Chr(13) + Chr(10) + str1
              WndProc = 0

看你的代码呀

你这个窗口收到74号消息时会执行这里的东东,所以窗口的标题会被更改!

这样的代码也是不行的:
If 12 = uMsg Then
              ReDim a(wParam - 1)
              CopyMemory a(0), ByVal lParam, wParam
              str1 = StrConv(a, vbUnicode)
              Form1.Text1 = Form1.Text1 + Chr(13) + Chr(10) + str1
              WndProc = CallWindowProc(GetProp(hWnd, OLDWNDPROC), hWnd, uMsg, wParam, lParam)
End If
WndProc = CallWindowProc(GetProp(hWnd, OLDWNDPROC), hWnd, uMsg, wParam, lParam)

如何解决?

?

怎么VB的代码跑这来了?

Form1.Text1 = Form1.Text1  + str1

我的代码没有问题!
是:74号和12号消息的问题!
那消息在系统操作过程中,系统会认为用户要用发去的字符串去代替vb窗口标题!所以系统回想办法去更改vb窗口标题!
不过有时候更改不成功的!有时候会更改成功!