函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
    参数:
    hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
    Msg:指定被发送的消息。
    wParam:指定附加的消息指定信息。
    IParam:指定附加的消息指定信息。
    返回值:返回值指定消息处理的结果,依赖于所发送的消息。为啥不是参数IParam

解决方案 »

  1.   

    wParam,lParam怎么传都可以,只有接收时按照你的规则解析就可以了。BYTE m_Data[4];是局部变量,出了函数栈空间会释放,不安全,最好将他设为成员变量或静态变量。
      

  2.   

    BYTE *m_Data = new BYTE(4);
    m_Data[0] = 'a';
    m_Data[1] = 'b';
    m_Data[2] = 'c';
    m_Data[3] = '\0';
    SendMessage(WM_WAVE_DRAW,(WPARAM)m_Data,NULL);ON_MESSAGE(WM_WAVE_DRAW, OnWaveDraw)void CTestddDlg::OnWaveDraw(WPARAM wParam,LPARAM lParam)
    {
    CString tmp;
    tmp.Format("%s",wParam);
    AfxMessageBox(tmp);
    }
      

  3.   

    楼上的基本正确,再改造一下,避免内存泄漏。int nBufSize = 10;
    BYTE *pBuf = new BYTE[nBufSize];
    memset(pBuf, 'A', nBufSize);
    SendMessage(WM_USER_TEST,(WPARAM)m_Data, ,(LPARAM)nBufSize);ON_MESSAGE(WM_USER_TEST, OnUserTest)void CTestddDlg::OnUserTest(WPARAM wParam,LPARAM lParam)
    {
        BYTE *pBuf = (BYTE*)wParam;
        int nBufSize = (int)lParam;
        
        // do something    // free mem
        delete [] pBuf;
    }
      

  4.   

    SendMessage(WM_WAVE_DRAW,(WPARAM)m_Data,NULL);接收数据注意:格式转化.楼上写的可以!