<< 点击显示目录 >> 主页 PVI通信 > PVI帮助信息 > PVI base system > PVICOM interface > User messages > Windows message |
消息句柄被定义为该 用户消息的分配窗口(HWND类型)的句柄 。
消息编号被定义为窗口消息编号。一个用户参数可以被指定为一个消息参数。这个消息参数不会被PVICOM接口评估,而是与用户消息一起传递。用户信息的信号是作为 "后信息 "完成的。
在由消息句柄分配的应用程序的窗口程序中,用户消息数据的传输方式如下。
WinProc (HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
Argument |
描述 |
nMsg |
信息编号 |
wParam |
响应或事件数据的参考(对于PVI响应功能)。 |
lParam |
消息参数 在32位PVI版本(PviCom.dll)中,消息参数(用户参数)的大小为4字节,在64位PVI版本(PviCom64.dll)中为8字节。 |
在收到用户消息后,应用程序可以使用 PviGetResponseInfo 或PviXGetResponseInfo函数来读取分配给用户消息的数据信息。应用程序通过调用相应的PVI响应函数(Pvi...Response或PviX...Response)接收响应或事件数据。响应函数必须与每个用户信息一起被调用。否则,响应或事件数据的数据缓冲区就不会被释放。
Visual C++的例子
#include <PviCom.h>
class CPviDlg : public CDialog
{
...
DWORD m_hPv;
DWORD m_PvData;
DWORD m_PvStatus;
void MakePviReadRequ ();
LRESULT OnPviReadResp (WPARAM, LPARAM);
...
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CPviDlg, CDialog)
...
ON_MESSAGE (WM_USER+1, OnPviReadResp)
END_MESSAGE_MAP()
LRESULT CPviDlg::OnPviReadResp (WPARAM wParam, LPARAM lParam)
{
T_RESPONSE_INFO Info;
long ErrCode;
// read response status:
ErrCode = PviGetResponseInfo (wParam, NULL, NULL, &Info, sizeof(Info));
if (ErrCode == 0)
m_PvStatus = Info.Status;
...
// read response data:
ErrCode = PviReadResponse (wParam, &m_PvData, sizeof(m_PvData));
...
return (0);
}
void CPviDlg::MakePviReadRequ ()
{
long ErrCode;
// make read request:
ErrCode = PviReadRequest (m_hPv, POBJ_ACC_DATA,
CWnd::m_hWnd, WM_USER+1, 0);
...
}