如何在MFC CListCtrl中实现“点击并保持”行为?

时间:2008-10-20 14:07:29

标签: mfc listview mouse click tapandhold

如何在MFC CListCtrl中实现“点击并按住”行为?

我在CDialog中有一个MFC CListCtrl,我需要在CListCtrl中添加“点击并按住”行为。

这就是我所说的“点击并按住”:

如果用户在CListCtrl项目上单击(使用鼠标左键单击“标准”),则将调用函数A.

如果用户点击CListCtrl项目并按住鼠标左键超过一秒钟,则会调用功能B.

4 个答案:

答案 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)

可以通过pinvoking来完成

http://www.ceveni.com/2009/10/sample-code-for-context-menu-in-c.html

我认为这就是你要找的东西?