2008-10-20 58 views
1

如何在MFC CListCtrl中實現「輕敲並按住」行爲?如何在MFC CListCtrl中實現「輕敲並按住」行爲?

我有一個MFC CListCtrl在CDialog中,我需要添加到CListCtrl「點擊並按住」的行爲。

這就是我的意思是「點擊並按住」:

如果用戶點擊(「標準」用鼠標點擊左鍵)上一個CListCtrl項目,然後功能A將被調用。

如果用戶點擊一個CListCtrl項並按住鼠標左鍵超過一秒鐘,那麼函數B將被調用。

回答

2

繼承CListCtrl並實現OnLButtonDown和OnLButtonUp。在執行「選項卡並保持」之前,在OnLButtonDown中設置一個計時器,其長度等於您要等待的時間。

在您的計時器處理程序中,執行「點按並按住」操作。

如果你得到OnLButtonUp計時器到期之前,取消計時器和執行「點擊」操作(如果OnLButtonUp的連接點的參數是一個列表項。)

+0

您可能需要捕獲鼠標,或嘗試檢測鼠標何時離開窗口(或項目) - 以防用戶鼠標移動,移動和鼠標移動。 – Aardvark 2008-10-21 13:12:58

1

除了ajryans建議,您也可以需要繼承CListBox派生類,以便它從您的對話框中拾取鼠標消息。就像是;

BOOL CMyDialog::OnInitDialog() 
{ 
    MyListboxCtrl.SubclassDlgItem(ID_MYLISTBOX,this); 
    CDialog::OnInitDialog(); 
} 
相關問題