双击CListBox的空白区域不会调用我的双击功能

时间:2014-12-03 18:09:16

标签: user-interface mfc

我正在使用Visual Studio MFC进行GUI编程。

我目前有一个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
}

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

感谢。

1 个答案:

答案 0 :(得分: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消息。如果没有,你可能会遇到一些奇怪的错误。