[배움]/MFC

List Control 관련

도영수 2016. 6. 10. 21:04

https://msdn.microsoft.com/ko-kr/library/hfshke78.aspx


http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=1016



[VITEM 에 대한 설명]

http://crowback.tistory.com/142

http://blueye.tistory.com/84


[SetExtendedStyle에 대한 설명_MSDN]

https://msdn.microsoft.com/library/windows/desktop/bb774732


[Only LVS_REPORT style]

LVS_EX_GRIDLINES : 항목 주변에 라인 생성

LVS_EX_FULLROWSELECT : 항목을 선택했을 경우, 그 행의 라인이 모두 활성화 표시 됨

LVS_EX_CHECKBOXES : 0번 항목 앞에 Check Box 생성

LVS_EX_HEADERDRAGDROP : 컬럼 항목의 순서를 드래그 & 드랍하며 변경할 수 있음

LVS_EX_SUBITEMIMAGES : ?



[ List Control의 Item 선택 시, Event 처리 방법 ]


void CviewSampleDlg::OnNMClickListOld(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
 
    int index = pNMItemActivate->iItem; // 클릭한 아이템의 인덱스 얻어옴
     
    if(index >= 0 && index < m_ListOld.GetItemCount()) // 표시된 아이템들중에 클릭시 아래 코드 실행
    {
        // do somthing
    }
 
 
    *pResult = 0;
}

:: 행 클릭 시, 인덱스 값 가져오기
리스트 컨트롤에서 행을 클릭 하면 값을 반환하는 이벤트를 할 수 있다.
혹은 행 클릭시 이벤트를 수행하고 싶다면 아래의 순서 중 처음 몇가지 방법만 수행하면된다

1. 리스트컨트롤을 클릭하고 이벤트 버튼(번개아이콘)을 눌러 NM_CLICK 이라는 찾는다.
2. 오른쪽을 클릭하면 이벤트 이름이 있고 선택하면 .cpp에 아래와 같은 이벤트 함수가 추가된다

void CDataDlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
*pResult = 0;
}


3. 클릭 이벤트 함수 안에 아래의 소스를 넣는다
// 행 클릭시 행 넘버값 받아오기
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
int idx = pNMListView -> iItem;

// 선택된 아이템값의 아이템을 (0,1 ... n 번째 인덱스) 한개 가져온다.
CString sIndexValue;
sIndexValue = m_cListCtrl.GetItemText(idx, 1);


[ List Control 선택 관련 ] 


http://istudyhard.tistory.com/260

// 다중 선택시

void GetIndex()
{
   int nItemCount = m_ctrlList.GetSelectedCount();
   POSITION pos = m_ctrlList.GetFirstSelectedItemPosition();
   for (int i = 0; i < nItemCount; i++)
   {
      int nIndex = m_ctrlList.GetNextSelectedItem(pos);
   }
}

 
// 단일 선택

int GetIndex()
{
    int nSelectedItem = m_ctrlList.GetNextItem( -1, LVNI_SELECTED );
    CString strKey = m_ctrlList.GetItemText(nSelectedItem, 0);
    if ( strKey == "")
    {
        return -1;
    }
    return nSeletedItem;
}

 


// 다중선택한거 골라서 삭제

int nItem;
POSITION pos;

pos = m_ctrlList.GetFirstSelectedItemPosition();
while (pos != NULL)
{
    nItem = m_ctrlList.GetNextSelectedItem(pos);
    m_ctrlList.DeleteItem(nItem);
    pos = m_ctrlList.GetFirstSelectedItemPosition();
}


'[배움] > MFC' 카테고리의 다른 글

Visual Studio 기본제공 아이콘  (0) 2016.07.26
Message Box  (0) 2016.06.22
버튼 이미지 넣기  (0) 2016.05.09
[MFC] 각 클래스의 객체 포인터 얻어오기 [ 펌 ]  (0) 2016.04.19
Graphics 클래스  (0) 2016.04.12