如何在MFC CListCtrl中实现“点击并按住”行为?
我在CDialog中有一个MFC CListCtrl,我需要在CListCtrl中添加“点击并按住”行为。
这就是我所说的“点击并按住”:
如果用户在CListCtrl项目上单击(使用鼠标左键单击“标准”),则将调用函数A.
如果用户点击CListCtrl项目并按住鼠标左键超过一秒钟,则会调用功能B.
答案 0 :(得分:2)
继承CListCtrl并实现OnLButtonDown和OnLButtonUp。在OnLButtonDown中设置一个计时器,以确定在执行“制表符并保持”之前要等待的长度。
在计时器处理程序中,执行“点击并按住”操作。
如果在计时器到期之前获得OnLButtonUp,则取消计时器并执行“单击”操作(如果OnLButtonUp的CPoint参数在列表项上。)
答案 1 :(得分:1)
除了ajryans建议之外,您可能还需要子类化CListBox派生类,以便从您的对话框中获取鼠标消息。喜欢的东西;
BOOL CMyDialog::OnInitDialog()
{
MyListboxCtrl.SubclassDlgItem(ID_MYLISTBOX,this);
CDialog::OnInitDialog();
}
答案 2 :(得分:0)
这是另一种没有计时器的方法http://www.codeproject.com/KB/mobile/tapandhold.aspx。
答案 3 :(得分:0)