본문 바로가기

개발/mfc

[MFC] List control 만들기, 목록 지우기

반응형

[MFC] List control

> 만들기

> 목록 만들기

> 행 추가

> 행 개수 가져오기

> 행값 가져오기

> 1 행 삭제

> 지우기

 

 

========================

>  만들기

1) 도구상자에서 리스트 컨트롤을 선택
3) 리스트 컨트롤의 속성에서, View 속성을 Report로 변경
4) List Control 의 멤버변수를 클래스마법사에서 추가

    m_List1

 

> 목록 만들기

>> 리스트 컨트롤의 초기화 코드를 작성

void CLanMgrDlg::initList( CListCtrl *pLc )
{
	CRect rt;     // 리스트 컨트롤의 크기를 가져올 변수
	pLc->GetWindowRect(&rt);
	pLc->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);   // 리스트 컨트롤에 선표시 및 Item 선택시 한행 전체 선택

	pLc->InsertColumn(1, TEXT("#"), LVCFMT_CENTER, 50 );     // 첫번째  LVCFMT_LEFT, LVCFMT_CENTER, LVCFMT_RIGHT
	pLc->InsertColumn(2, TEXT("Mac"), LVCFMT_CENTER, 240 );     // 첫번째  LVCFMT_LEFT, LVCFMT_CENTER, LVCFMT_RIGHT
	pLc->InsertColumn(3, _T("From"), LVCFMT_CENTER, 200);   // 두번째
	pLc->InsertColumn(4, TEXT("Others"), LVCFMT_LEFT, 750);   // 세번째
}

BOOL CLanMgrDlg::OnInitDialog()
{
;
;
// init List
	initList(&m_List1);

	return TRUE;  // return TRUE  unless you set the focus to a control
}

 

 

> 행 추가

>> 현재 입력된 행의 갯수를 구하고, 그 다음 행부터 데이터를 채워나가는 코드입니다.

int num = m_List1.GetItemCount();
CString str;

str.Format(_T("%d"), num);
m_List1.InsertItem(num,str );                      // (n, 0 ) 번째 내용
m_List1.SetItem(num, 1, LVIF_TEXT, TEXT("test"), NULL, NULL, NULL, NULL);  // (n, 1 ) 번째 내용

str.Format(_T("HaHaHa"));
m_List1.SetItem(num, 2, LVIF_TEXT, str2 , NULL, NULL, NULL, NULL);     // (n, 2) 번째 내용

 

 

> 행 개수 가져오기

int idx; 
idx= m_List1.GetSelectedCount();

 

 

> 행값 가져오기

>> 현재 선택된 행의 위치를 구하고, 그 행 item 가져 오기.

	CString cS1, cS2;
	POSITION pos;

	pos= m_List1.GetFirstSelectedItemPosition();	// 선택된 행의 위치 구함
	int idx = m_List1.GetNextSelectedItem(pos);	// 행의 위치를 int 형으로 변환

	if( idx < 0) 	AfxMessageBox(_T("Select 1 at the list"));
	else {
		cS1 = m_List1.GetItemText(idx, 1);	AfxMessageBox(cS1);	
		cS2 = m_List1.GetItemText(idx, 2);	AfxMessageBox(cS2); 
	}

 

 

 

>  1 행 삭제

>> 현재 선택된 행의 위치를 구하고, 그 행을 삭제

POSITION pos;
pos= m_List1.GetFirstSelectedItemPosition();	// 선택된 행의 위치 구함
int idx = m_List1.GetNextSelectedItem(pos);	// 행의 위치를 int 형으로 변환
m_List1.DeleteItem(idx);			// 행 삭제


>  목록 지우기

 m_List1.DeleteAllItems();	// 목록 행 말고, 모든 행 지우기
 m_List1.DeleteColumn(0);	// 첫째 열 지우기, 다 지울라면 열 개수 만큼 반복
반응형