2014-12-03 60 views
0

我正在使用Visual Studio MFC进行GUI编程。双击CListBox的空白区域不会调用我的双击功能

我目前有一个CListBox,当我双击它的一个空白部分时,我想让它调用一个函数。 (当没有选择项目时)目前,我只能通过按下一个单独的按钮来添加项目。

我做了以下测试代码来测试CListBox是否响应在空白处的双击。

BEGIN_MESSAGE_MAP(CScnBuildDlg, CDialog) 
    ON_LBN_DBLCLK(IDC_EVENT_LIST, OnDblclkEventList) 
END_MESSAGE_MAP() 

void CScnBuildDlg::OnDblclkEventList() 
{ 
    exit(-1); //Currently, it only exits when double clicking on a specific item, not on an empty space 
} 

有关如何解决此问题的任何想法?

谢谢。

+0

[为什么双击事件检测mfc中listBox的空白区域](http://stackoverflow.com/questions/20965423/why-double-click-event-detecting-on-empty-area-of -listbox合MFC) – rrirower 2014-12-03 19:26:53

回答

0

使用CWnd::Oncommand可以捕获此事件的其他方法。如果您将以下事件处理程序添加到您的对话框代码中,您将能够捕获双击。

BOOL CScnBuildDlg::OnCommand(
    WPARAM wParam, 
    LPARAM lParam 
    ) 
    { 
    if (LOWORD(wParam) == IDC_EVENT_LIST && HIWORD(wParam) == LBN_DBLCLK) 
     DoSomething(); 
    return CDialog::OnCommand(wParam, lParam); 
    } 

但是,您需要小心,因为此事件也会陷入双击现有列表框项目。您还需要确保您允许基类有机会处理WM_COMMAND消息。如果没有,你可能会遇到一些奇怪的错误。