Windows message

<< 点击显示目录 >>

主页  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);
    ...
}