比如有10个按钮,各个按钮的消息处理函数类似。想把他放一个消息处理函数里处理,怎么获得发送者以视区别?

解决方案 »

  1.   

    WM_COMMAND
    The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated. WM_COMMAND 
    wNotifyCode = HIWORD(wParam); // notification code 
    wID = LOWORD(wParam);         // item, control, or accelerator identifier 
    hwndCtl = (HWND) lParam;      // handle of control  ***
      

  2.   

    ON_COMMAND_RANGE根据按钮的id来区别
      

  3.   

    同意一楼!
    wID = LOWORD(wParam);         // item, control, or accelerator identifier 
    获得的就是控件的ID
      

  4.   

    看看msdn 关于ON_COMMAND_RANGE的说明
    ms-help://MS.MSDNQTR.2003FEB.2052/vclib/html/_MFCNOTES_TN006.htm
      

  5.   

    BOOL CMyView::OnCommand(WPARAM wParam, LPARAM lParam) 
    {
    CString str;
    str.Format("%d",wParam);
    AfxMessageBox(str);     //显示发送消息的ID号
    return CFormView::OnCommand(wParam, lParam);
    }
      

  6.   

    这样,只有响应PreTranslateMessage,但感觉还是分开处理好些。
      

  7.   

    像ON_BN_CLICKED这样的消息如何获得其wParam,lParam.
      

  8.   

    响应PreTranslateMessage
    if  (pMsg->message  ==  WM_LBUTTONDOWN)  
    {
    if(pMsg->hwnd == GetDlgItem(IDC_......._BUTTON)->m_hWnd)
    {
                   ....................................
                       }
                       else if(.....)
                       {
                           ..........
                        }                   .................
              }
      

  9.   

    if(pMsg->hwnd == GetDlgItem(IDC_......._BUTTON)->m_hWnd)判断是不是你所按下的按纽
      

  10.   

    else if(.....)
    else if(.....)
    else if(.....)
    ......
    这样做10个判断了恐怕得,不过我20个的都做过。
    http://community.csdn.net/Expert/topic/3452/3452285.xml?temp=.1522333
    有详细的步骤说明