리스트컨트롤과 관련된 몇가지 예제들을 올려봅니다.
필요한 부분만 참고해서 사용하세요.
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);
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="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
}
} </ncount>
'My > works' 카테고리의 다른 글
ActiveX 액티브엑스 설치 안될 경우 해결방안 (cab 배포 실패) (2) | 2013.01.04 |
---|---|
[MFC] 트레이 아이콘 (Tray Icon) 등록하기 (2) | 2012.12.28 |
[MFC] HotKey(핫키)를 사용하여 키보드 막기 예제소스 (0) | 2012.12.27 |
[MFC] STOPWATCH(스톱워치) 시간 측정하기 예제소스 (11) | 2012.12.27 |
[MFC] Cstring <-> Char* 형변환 (0) | 2012.12.26 |
[MFC] YCbCr <-> RGB 변환 (0) | 2012.12.26 |
[C] 디렉토리(폴더)의 모든 파일을 제거 (0) | 2012.12.26 |
[C] rand 함수를 이용하여 난수(랜덤) 발생시키기 (0) | 2012.12.26 |
[MFC] 문자열 파싱하기 (5) | 2012.12.26 |
[MFC] 리스트컨트롤(List Control) 클릭한 곳의 index값 얻어오기 (0) | 2012.12.24 |