2017. 1. 10. 13:20 MFC/기초
MFC) CListCtrl 사용법
[CListCtrl]
1. 리스트 컨트롤 생성
(h)
CListCtrl m_listCtrl;
(cpp)
DDX_Control(pDX, IDC_LIST_CTRL, m_listCtrl); // IDC_LIST_CTRL: 리스트 컨트롤의 ID
2. 리스트 컨트롤 기본모양 변경
(cpp)
m_listCtrl.ModifyStyle(0, LVS_REPORT);
// LVS_REPORT: 리포트 형태
// LVS_ICON: 아이콘 형태
// LVS_SMALLICON: 작은 아이콘 형태
// LVS_LIST: 리스트 형태
// 리스트 컨트롤 기본모양 변경은 리소스의 속성에서 "View"에서 설정할 수 있다. 리소스 뷰에서 설정 후 코드에서 ModifyStyle();을 실행 할 경우 코드 기준으로 인식되므로 주의.
3. 리스트 컨트롤 칼럼 추가/삭제
(추가)
m_listCtrl.InsertColumn(nCol, "~~", LVCFMT_LEFT, nWidth, -1);
// nCol: 삽입할 칼럼 순번
// "~~": 삽입할 칼럼명
// LVCFMT_LEFT: 칼럼 열 정렬 옵션.(LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER)
// nWidth: 칼럼 너비
// -1: 서브 아이템 존재 시 연결 여부. -1로 설정 할 경우 서브아이템 존나 안하는 걸로 판단.
(삭제)
m_listCtrl.DeleteColumn(nCol); // 입력 Col값에 맞는 항목 삭제. 첫 항목(Col==0)삭제하면
// 다음 항목이 Col==0이 되므로 연속삭제 시 생각하고 삭제.
4. 리스트 컨트롤 값 추가/삭제
(추가)
m_listCtrl.InsertItem(nRow, "~~"); // nRow: 행 번호, "~~": 입력 행의 첫 칼럼에 들어갈 값
m_listCtrl.SetItem(nRow, nCol, LVIF_TEXT, "~~", 0, 0, 0, NULL);
// nRow: 행 번호, nRow: 열 번호
// LVIF_TEXT: 입력 옵션.
// "~~": 입력 값
// 0, 0, 0, NULL: 마스크 및 이미지 등의 값인데 인터넷 찾으면 나옵니다.
(삭제)
m_listCtrl.DeleteAllItems(); // 전체 항목 삭제
m_listCtrl.DeleteItem(nRow); // 입력 Row값에 맞는 항목 삭제. 첫 항목(Row==0)삭제하면
// 다음 항목이 Row==0이 되므로 연속삭제 시 생각하고 삭제.
5. 선택된 아이템 확인
POSITION pos = m_listCtrl.GEtFirstSeletedItemPosition();
while (pos)
{
int nItem = m_listCtrl.GetNextSelectedItem(pos); // 자동으로 pos++ 됨.
// nItem 을 활용하여 변경 등의 행위 하시면 됩니다.
}
6. 리스트컨트롤 헤더 칼럼 핸들러 가져오기
CHeaderCtrl *pHeader = (CHeaderCtrl *)m_listCtrl.GetDlgItem(0); // 리스트 컨트롤 칼럼 헤더
// 리스트 컨트롤 헤더 크기조절 및 선택 못하게 하기
::EnableWindow(pHeader->GetSafeHwnd(), FALSE);
// 리스트 컨트롤 헤더 크기조절 및 선택 가능하게 하기
::EnableWindow(pHeader->GetSafeHwnd(), TRUE);
7. 리스트컨트롤 활성화/비활성화
m_listCtrl.EnableWindow(TRUE); // 사용 가능하도록 활성화
m_listCtrl.EnableWindow(TRUE); // 사용 불가능하도록 비활성화
'MFC > 기초' 카테고리의 다른 글
MFC) CTreeCtrl 사용법(퍼옴) (0) | 2017.01.11 |
---|---|
MFC) CListBox 사용법 (0) | 2017.01.10 |
MFC) CWinThread 상속/시작/종료 정리 (0) | 2017.01.10 |
MFC) 윈도우 메시지 란? (메시지맵과 메시지 라우팅의 원리) (1) | 2016.12.15 |
MFC) SendMessage / PostMessage 설명 및 차이 (1) | 2016.12.15 |