如题,
例如发消息  ::SendMessage(hwnd,WM_COMMAND,IDB_START_UPDATE,99);怎么在消息响应函数中取得第4个参数99?

解决方案 »

  1.   

    void OnSysCommand(WPARAM nID, LPARAM lParam)
    {
        //IDB_START_UPDATE = nID;
     
        //lParam = 99
    }
      

  2.   

    处理WM_COMMAND消息,通过lParam参数传过去的。
      

  3.   


    这是我的代码:
    void CTCPPara::OnButton1() //Button1按下的消息
    {
    ::SendMessage(this->m_hWnd,WM_COMMAND,ID_CONNECT,99);//给控件ID为ID_CONNECT的按钮发消息
    }
    void CTCPPara::OnConnect(WPARAM nID, LPARAM lParam)  //ID_CONNECT控件按下的消息
    {

    int id=nID;
    int para=lParam;
    }
      

  4.   

    没有人知道吗?
    我将发送消息的参数转成LPARAM也不行,
    ::SendMessage(this->m_hWnd,WM_COMMAND,ID_CONNECT,(LPARAM)99);
      

  5.   

    ::SendMessage(this->m_hWnd,WM_COMMAND,ID_CONNECT,(LPARAM)99);你的消息号必须自己定义!
      

  6.   

    那俩只是消息带的参数,对于自定义的消息,你可以根据实际需要传递数值,但对于系统消息他们都有特定的含义,比如句柄、键盘鼠标状态等,WM_COMMAND你可以看下MSDN。
      

  7.   

    如果要模拟某个按钮被按下的话,LPARAM=NULL就可以了。
    你只要::SendMessage(this->GetSafeHwnd(), WM_COMMAND, MAKEWPARAM(ID_CONNECT, BN_CLICKED), NULL);
    WM_COMMAND消息的WPARAM的低字为控件ID,高字为识别码,已经足够了。不知道你从哪里找来的99这个数字,你指定了非法的参数,肯定会崩溃。