由一个dialog,其中有一个Listctrl,
dialog中有个OnNMDblclkListCtrl(NMHDR *pNMHDR, LRESULT *pResult)
来判断ListCtrl中的复选框选中状态的函数
在Listctrl中,我添加一个OnLButtonDown(UINT nFlags, CPoint point)
来添加Edit的函数我发现,在执行的时候只执行后面的OnLButtonDown(UINT nFlags, CPoint point)函数,不执行前一个,
请问该如何处理!谢谢!

解决方案 »

  1.   

    我自己想到的方法是在OnLButtonDown(UINT nFlags, CPoint point)中,继续发送鼠标消息,可惜,不会,
    sendmessage的参数和(UINT nFlags, CPoint point)这样的参数,我不会转换,
    在dialog中PreTranslateMessage(MSG* pMsg)中处理消息,也是一样,不知道要怎么处理呀
    那位大大给指点一下,谢谢!
      

  2.   

    有单击,就不能有双击事件,在单击事件中用两次GetTickCount来判断单击的间隔,从而确定为双击事件
      

  3.   

    我在OnLButtonDown(UINT nFlags, CPoint point)中,单击双击都处理了,
    所以想把处理的消息继续使用,应该这么做呀?,谢谢!
      

  4.   

    OnLButtonDown,估计是你响应的是对话框的单击消息,而不是控件单击的通知消息。
    1.建议不要使用OnLButtonDown函数,要想响应Edit控件中的单击消息
    a.在头文件中添加OnClickEdit函数的定义
    b.BEGIN_MESSAGE_MAP/END_MESSAGE_MAP之间添加
    ON_NOTIFY(NM_RCLICK, IDC_EDIT/*你的Edit控件ID*/, OnClickEdit)
    c.实现OnClickEdit函数 
    void CXXDlg::OnClickEdit(NMHDR* pNMHDR, LRESULT* pResult) 
    {}
    2.Listctrl控件的双击响应同上
    b.BEGIN_MESSAGE_MAP/END_MESSAGE_MAP之间添加
    ON_NOTIFY(NM_DBLCLK, IDC_ListCtrl/*你的Edit控件ID*/, OnNMDblclkListCtrl)
      

  5.   

    可能是我没说明白,我处理的是同一个控件的同一个消息,
    只不过 在CListCtrl的派生类中 处理鼠标双击 的作用是向CListCtrl中添加一个临时的CEdit,是其可编辑
    ,在Dialog中 处理鼠标双击,是用来更改复选框状态,和一些其他东西这两个函数有点冲突,不能同时起作用,我也不会把两个函数写在一起,想看看有没有其他的方法,能解决这样的问题,谢谢!
      

  6.   


    在Dialog中 处理鼠标双击,是用来更改复选框状态,和一些其他东西
    你双击哪里了,不会双击在某个控件上吧,那样当然不响应了!!!复选框
    Edit控件 都在Listctrl上,如果不在同一列的话还是有办法都通过双击来处理的,就在Listctrl的OnLButtonDown(UINT nFlags, CPoint point)函数中判断你的鼠标所在的行列的不同处理相应的操作就行了.