본문 바로가기
Programming/Tips(C++,C#)

ListCtrl에서 아이템 선택시 알아내기

by 곰네Zip 2010. 5. 12.

//요기는 메시지 맵 -> ListCtrl을 가지고 있는 Dlg의 메시지 맵
 ON_NOTIFY(LVN_ITEMCHANGED,IDC_RECIP_LIST,OnLvnItemchangedListItem)

//이 함수를 만들어야한다
void 다이얼로그::OnLvnItemchangedListItem(NMHDR *pNMDHR, LRESULT *pResult){
 LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMDHR);

 if( pNMLV && (pNMLV->uNewState == (UINT)(LVIS_FOCUSED | LVIS_SELECTED))){
  int nAt = pNMLV->iItem;
  //nAt = 선택된 아이템임
  //글자 얻어오기
  char szText[128];
  LVITEM item;
  memset(&item,0,sizeof(LVITEM));
  memset(szText,0,sizeof(szText));

  item.mask = LVIF_TEXT;
  item.iItem = nAt;
  item.iSubItem = 1;
  item.pszText = szText;
  item.cchTextMax = sizeof(szText);

  m_wndList.GetItem(&item);
 }

 *pResult = 0;
}

아니면...
MFC환경이므로.. Text를 퍼오기 위해서는...
int i = list.GetNextItem( -1, LVNI_SELECTED );
CString strSel = list.GetItemText( i, 0 );
로 처리해도 괜찮을 것 같다.

반응형

댓글