2014-12-03 2 views
0

GUI 프로그래밍을 위해 Visual Studio MFC를 사용하고 있습니다.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-in-mfc) – rrirower

답변

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 메시지를 처리 ​​할 수 ​​있도록해야합니다. 그렇지 않으면 이상한 버그가 발생할 수 있습니다.

관련 문제