vc++ 中 如果用户单击一个按钮程序收到一个WM_COMMAND消息 请问怎么判断用户是单击还是双击?怎样判断是按下还是放开?

解决方案 »

  1.   

    单击按钮响应的不是BN_CLICKED消息吗??
    怎么是WM_COMMAND消息阿??如果要获得单击还是双击?怎样判断是按下还是放开?这些消息可以派生一个按钮类,响应这些消息阿
      

  2.   

    忘记说了  我用的是API  不会MFC鼠标单击按钮会产生一个WM_COMMAND消息的
      

  3.   

    PreTransMessage中处理WM_LBUTTONDOWN
    不过有必要判断么,WM_COMMAND一般是放开后发送的
      

  4.   

    哦,win32程序阿不行的wParam  lParam 
    没有包含这些信息
      

  5.   

    是啊 这些信息在wParam  lParam  参数中但是不知道怎么用
      

  6.   

    响应WM_COMMAND
    if(lParam != 0) //控件的Notify
    {
    HWND btn = (HWND)lParam;
    int id = wParam & 0xffff;
    int code = wParam >> 16;
    //if(id != 按钮的id)return;
    if(code == BN_CLICKED)
    {
    TRACE("Button clicked\n");
    }
    else if(code == BN_DOUBLECLICKED)
    {
    TRACE("Button dblclk\n");
    }
    }
      

  7.   

    wParam
    The high-order word specifies the notification code if the message is from a control. 高16位是控件的通知代码,wParam右移16位,判断即可。如楼上所示
      

  8.   

    用鼠标单击按钮时,子窗口控件就向其父窗口发送一个WM_COMMAND消息。BTNLOOK拦截WM_COMMAND消息并显示wParam和lParam的值,LOWORD (wParam)   子窗口IDHIWORD (wParam)  通知码lParam 子窗口句柄
     按钮通知码标识符
     值
     
    BN_CLICKED
     0
     
    BN_PAINT
     1
     
    BN_HILITE or BN_PUSHED
     2
     
    BN_UNHILITE or BN_UNPUSHED
     3
     
    BN_DISABLE
     4
     
    BN_DOUBLECLICKED or BN_DBLCLK
     5
     
    BN_SETFOCUS
     6
     
    BN_KILLFOCUS
     7