MSG Structure是这么定义的
The MSG structure has the following form:typedef struct tagMSG {     // msg  
    HWND   hwnd;      
    UINT   message;
    WPARAM wParam;
    LPARAM lParam;
    DWORD  time;
    POINT  pt;
} MSG;
当我重载
BOOL CXXXXXDlg::PreTranslateMessage(MSG* pMsg) 
{
   if(pMsg->message == WM_LBUTTONDOWN)
   {
      if(pMsg->hwnd == ((CWnd*)GetDlgItem(IDC_BTDOME_01))->m_hWnd)
        处理;
}}
可以根据Id来判断控件
但是这样为什么不行呢
BOOL CXXXXXDlg::PreTranslateMessage(MSG* pMsg) 
{
   if(pMsg->message == WM_LBUTTONDOWN)
   {
      if(LOWORD(pMsg->wparam) == IDC_BTDOME_01)
        处理;
}}
用Oncommnd却可以根据wparam判断id

解决方案 »

  1.   

    >>用Oncommnd却可以根据wparam判断id
    在Oncommnd 处理函数要晚于WM_LBUTTONDOWN消息,是系统处理之后,再传递id值给oncommnd
    在WM_LBUTTONDOWN消息处理只有虚拟码,详细可参考msdn关于两个消息的说明
      

  2.   

    不能一回事,WM_COMMAND是由控件发给父窗体的,wParam参数记录了控件的ID。而WM_LBUTTONDOWN消息的wParam参数保存的并不是ID。
      

  3.   

    WM_LBUTTONDOWN    WPARAM wParam
        LPARAM lParam;
        
    ParameterswParam
    Indicates whether various virtual keys are down. This parameter can be one or more of the following values. 
    MK_CONTROL
    The CTRL key is down.
    MK_LBUTTON
    The left mouse button is down.
    MK_MBUTTON
    The middle mouse button is down.
    MK_RBUTTON
    The right mouse button is down.
    MK_SHIFT
    The SHIFT key is down.
    MK_XBUTTON1
    Windows 2000/XP: The first X button is down.
    MK_XBUTTON2
    Windows 2000/XP: The second X button is down.
    lParam
    The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area. The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area. 
      

  4.   

    wParam、lParam是消息的附加参数,不同类型的消息wParam、lParam的意义是不同的,WM_LBUTTONDOWN是标准消息,wParam的意义并非控件的ID,只有控件产生的通告消息(WM_COMMAND)的附加参数wParam(低位)是控件的ID