C++Builder 程序员博客
3 Aug
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窗口标题!
不过有时候更改不成功的!有时候会更改成功!