검색어 'listcontrol'에 대한 1 개의 검색 결과

  1. 2009/10/28 MFC list control 사용 by dhappy

MFC list control 사용

2009/10/28 12:22 / 컴퓨터

순서대로 해도 됨

------------------

1. 리스트컨트롤 추가

2. 멤버변수 추가
 m_list

3. 체크박스 레이아웃
 m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES ); 

4. 초기화
 m_list.DeleteAllItems(); 

5. 칼럼명 설정
 m_list.InsertColumn(0, _T("번호"), LVCFMT_LEFT, 100, -1);
 m_list.InsertColumn(1, _T("제목"), LVCFMT_LEFT, 100, -1);
 m_list.InsertColumn(2, _T("작성자"), LVCFMT_LEFT, 100, -1);
 m_list.InsertColumn(3, _T("코멘트"), LVCFMT_LEFT, 100, -1);
 m_list.InsertColumn(4, _T("파일"), LVCFMT_LEFT, 100, -1);
        //칼럼 추가 인덱스, 칼람명, 정렬방향, 칼럼길이, 서브아이템 갯수

6. 데이터 추가
 int seq = 0;
 CString seq_string;
 seq_string.Format(_T("%d"),seq);
 CString title=_T("test");
 CString writer=_T("이대한");
 CString comment=_T("없음");
 CString file=_T("파일경로");

 m_list.InsertItem(seq,seq_string);
 m_list.SetItem(seq,1,LVIF_TEXT,title,0,0,0,NULL);
 m_list.SetItem(seq,2,LVIF_TEXT,writer,0,0,0,NULL);
 m_list.SetItem(seq,3,LVIF_TEXT,comment,0,0,0,NULL);
 m_list.SetItem(seq,4,LVIF_TEXT,file,0,0,0,NULL);

 seq = 1;
 seq_string.Format(_T("%d"),seq);
 title=_T("test2");
 writer=_T("이대한2");
 comment=_T("있음");
 file=_T("파일경로");

 m_list.InsertItem(seq,seq_string);
 m_list.SetItem(seq,1,LVIF_TEXT,title,0,0,0,NULL);
 m_list.SetItem(seq,2,LVIF_TEXT,writer,0,0,0,NULL);
 m_list.SetItem(seq,3,LVIF_TEXT,comment,0,0,0,NULL);
 m_list.SetItem(seq,4,LVIF_TEXT,file,0,0,0,NULL);


7. 아이템 선택(1개 이상 선택 및 확인)
 POSITION pos = m_list.GetFirstSelectedItemPosition();

 if (pos == NULL)
  AfxMessageBox(_T("No items were selected!\n"));
 else
 {
  while (pos)
  {
   int nItem = m_list.GetNextSelectedItem(pos);
   CString temp = m_list.GetItemText(nItem,0);
   temp.Format(_T("%s seq가 선택됨"),temp);
   AfxMessageBox(temp);

 
   // you could do your own processing on nItem here
  }
 }


8. 체크박스 전체 체크
 int nCount=m_list.GetItemCount();
 for(int i = 0; i< nCount;i++)
  m_list.SetCheck(i);

9. 체크박스 전체 해제
 //헤더파일에
 #ifdef ListView_SetCheckState
 #define ListView_SetCheckState(hwndLV,i,fCheck) \
  ListView_SetItemState(hwndLV,i, \
  INDEXTOSTATEIMAGEMASK((fCheck)+1),LVIS_STATEIMAGEMASK)
 #endif

 //소스파일에
 CListCtrl* tmp;
  tmp=&m_list;
  int nCount=m_list.GetItemCount();
  for(int i = 0; i< nCount;i++)
   ListView_SetCheckState(tmp->GetSafeHwnd(),i,FALSE);

10. 체크 확인(1개 이상)
int nCount=m_list.GetItemCount();
 for(int i =0  ; i<nCount;i++)
 {
  BOOL a = m_list.GetCheck(i);
  if(a==TRUE)
  {
   CString temp = m_list.GetItemText(i,0);
   temp.Format(_T("%s seq가 선택됨"),temp);
   AfxMessageBox(temp);
  }
 }


11. 데이터 삽입
 // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
 int seq = 0;
 CString seq_string;
 seq_string.Format(_T("%d"),seq);
 CString title=_T("test");
 CString writer=_T("이대한");
 CString comment=_T("없음");
 CString file=_T("파일경로");

 m_list.InsertItem(seq,seq_string);
 m_list.SetItem(seq,1,LVIF_TEXT,title,0,0,0,NULL);
 m_list.SetItem(seq,2,LVIF_TEXT,writer,0,0,0,NULL);
 m_list.SetItem(seq,3,LVIF_TEXT,comment,0,0,0,NULL);
 m_list.SetItem(seq,4,LVIF_TEXT,file,0,0,0,NULL);


12. 데이터 삭제
 POSITION pos = m_list.GetFirstSelectedItemPosition();

 if (pos == NULL)
  AfxMessageBox(_T("No items were selected!\n"));
 else
 {
  while (pos)
  {
   int nItem = m_list.GetNextSelectedItem(pos);
   CString temp = m_list.GetItemText(nItem,0);
   temp.Format(_T("%s seq가 삭제됨"),temp);
   AfxMessageBox(temp);
   m_list.DeleteItem(nItem);
   // you could do your own processing on nItem here
  }
 }

13.


2009/10/28 12:22 2009/10/28 12:22
dhappy 이 작성.