반응형

이미 CMFCShellListCtrl 내부에서 더블클릭 이벤트를 처리하고 있기 때문입니다.

 

CMFCShellListCtrl 에서 상속받은 MyShellListCtrl 클래스 하나 만드시고 

 

NM_DBLCLK Notify Reflect 이벤트 핸들러 등록하신 다음 거기서 처리해보세요.

 

ON_NOTIFY_REFLECT(NM_DBLCLK, &MyShellListCtrl::OnNMDblclk)

 

MyShellListCtrl::OnNMDblclk 안에서는 다음 코드를 한번 불러줘야 원래 동작이 실행됩니다.

 

CMFCShellListCtrl::OnDblClk(pNMHDR, pResult);






http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=511226&ref=511179


1. MFC를 사용하시려면

  다이얼로그 편집창에서 Ctrl+W 눌러서 클래스위저드를 실행하구요

  Member varible 탭에서 IDC_LIST_USER 을 더블클릭하여

  멤버이름을 m_ListUser로 카테고리를 Control로 지정하고 확인버튼을 눌러 닫습니다.

 

  ----소스코드 수정----

//    HWND hWnd1 =  ::GetDlgItem (m_hWnd,IDC_LIST_USER);

    LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;

    RECT rect;

    //get the row number

    int nItem = temp->iItem;

    //get the column number

    

    int nSubItem = temp->iSubItem;

    if(nSubItem == 0 || nSubItem == -1 || nItem == -1)

        return ;

    //Retrieve the text of the selected subItem from the list

    CString str = m_ListUser->GetItemText(nItem ,nSubItem);

 

2. API로 코딩하시려면

    GetItemText 대신에 ListView_GetItemText 함수를 사용하셔야 합니다.

 

   ---- 소스코드 수정----

  HWND hWnd1 =  ::GetDlgItem (m_hWnd,IDC_LIST_USER);

    LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;

    RECT rect;

    //get the row number

    int nItem = temp->iItem;

    //get the column number

    

    int nSubItem = temp->iSubItem;

    if(nSubItem == 0 || nSubItem == -1 || nItem == -1)

        return ;

    //Retrieve the text of the selected subItem from the list

    CString str;

    ListView_GetItemText(hWnd1,nItem ,nSubItem, str, 255);

 

둘 중에서 편한방법으로 코딩하세요...^^



반응형

+ Recent posts