我在VB程序中已能接收到VC程序中发送来的消息,但不知道如何解析处数据?在VC的“发送”程序中,发送的消息中的lParam为指向一个288字节的自定义结构的指针。在VC的“接收”程序中示意代码如下
/* “接收”部分的消息处理程序 DEMO
▲▲请注意lParam的定义
LONG OnStkDataOK(UINT wParam,LONG lParam)
{
RCV_DATA* pHeader;
// ▲▲请注意lParam的定义
pHeader = (RCV_DATA *)lParam;
switch( wParam )
{
case RCV_REPORT: // 共享数据引用方式,股票行情
for(i=0; i<pHeader->m_nPacketNum; i++)
{
pHeader->m_pReport[i] ...
// 数据处理
}
break;.....
'下面是我在VB中的程序
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = 2006 Then '2006号消息为自定义的通信消息号码(端口)
mMsgC = mMsgC + 1 '此处应该对接收到的的数据进行处理
Select Case wParam
Case RCV_REPORT '接收到的wParam是正确的 '▲▲请问在此处如何取得lParam中的数据??
'▲▲下面是我用的CopyMemory,但得到的tRecData中的数据不正确
pRec = VarPtr(tRecData)
'CopyMemory ByVal VarPtr(tRecData), lParam, tL
'CopyMemory tRecData, lParam, tL
CopyMemory pRec, lParam, tL
End Select
End If
Dim lpPrevWndProc As Long
'查询原来默认的窗口过程指针
lpPrevWndProc = GetWindowLong(hw, GWL_USERDATA)
'调用原来的窗口过程
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
/* “接收”部分的消息处理程序 DEMO
▲▲请注意lParam的定义
LONG OnStkDataOK(UINT wParam,LONG lParam)
{
RCV_DATA* pHeader;
// ▲▲请注意lParam的定义
pHeader = (RCV_DATA *)lParam;
switch( wParam )
{
case RCV_REPORT: // 共享数据引用方式,股票行情
for(i=0; i<pHeader->m_nPacketNum; i++)
{
pHeader->m_pReport[i] ...
// 数据处理
}
break;.....
'下面是我在VB中的程序
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = 2006 Then '2006号消息为自定义的通信消息号码(端口)
mMsgC = mMsgC + 1 '此处应该对接收到的的数据进行处理
Select Case wParam
Case RCV_REPORT '接收到的wParam是正确的 '▲▲请问在此处如何取得lParam中的数据??
'▲▲下面是我用的CopyMemory,但得到的tRecData中的数据不正确
pRec = VarPtr(tRecData)
'CopyMemory ByVal VarPtr(tRecData), lParam, tL
'CopyMemory tRecData, lParam, tL
CopyMemory pRec, lParam, tL
End Select
End If
Dim lpPrevWndProc As Long
'查询原来默认的窗口过程指针
lpPrevWndProc = GetWindowLong(hw, GWL_USERDATA)
'调用原来的窗口过程
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
你就在VB上定义一个与VC相同的结构
请见下面的地址
http://community.csdn.net/Expert/TopicView3.asp?id=5161298