CListCtrl 에 관한 정리

어느 정리 잘된 블로그에서 퍼온 정보입니다. 정말 감사 ㅜㅜ

출처 : http://cafe.naver.com/thav1.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=486

 

1. ListView 설명

ListView는 ListCtrl을 가지고 있는 형태의 View 입니다.

Base class 를 CListView로 설정하면 사용이 가능합니다.

 

2. ListView 사용법

ListView 에 있는 ListCtrl 접근법은 다음과 같습니다.

GetListCtrl();

 

3. ListView COLUMN 추가하는 방법

3-1. LV_COLUMN 구조

typedef struct _LVCOLUMN {

  UINT        mask;                // 형태

  int           cx;                    // 컬럼 가로 사이즈

  LPTSTR   pszText;            // 컬럼 문자열

  int           cchTextMax;      // 문자 최대 길이

  int           iSubItem;           // 서브 아이템 번호

  int           iImage;              // 이미지 번호

  int           iOrder;              // 컬럼 순서 번호

} LVCOLUMN, FAR *LPLVCOLUMN;

3.2 ListView에 COLUMN 사용법

int   i     = 0X00;
int   lvcaption_cx[]  = { 20, 50, 50, 50, 50, 140, 140 };
char*  lvcaption_text[] = { "컬럼1", "컬럼2", "컬럼3", "컬럼3", "컬럼5", "컬럼6", "컬럼7", "" };
LV_COLUMN lvColumn;

while(1)
{
  if(lvcaption_text[i] == "") { break; }
  lvColumn.mask = LVCF_TEXT | LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM;

  lvColumn.fmt = LVCFMT_CENTER;
  lvColumn.cx = lvcaption_cx[i];
  lvColumn.pszText = lvcaption_text[i];
  lvColumn.cchTextMax = strlen(lvcaption_text[i]);
  GetListCtrl().InsertColumn(i, &lvColumn);                      //컬럼을 추가하는 부분입니다.
  i++;
} /*-- end of while(1) --*/

 

4. ListView Item 추가하는 방법

4-1. LVITEM 구조

typedef struct _LVITEM {

  UINT                   mask;                  // 형태

  int                      iItem;                   // 아이템 번호

  int                      iSubItem;             // 컬럼 번호

  UINT                   stateMask;          // 현재 아이템 상태

  LPARAM             pszText;             // 아이템 문자열

  int                      cchTextMax;       // 문자열 최대 길이

  int                      iImage;               // 그림 번호

  LPARAM             IParam;              // 본 구조체의 IParam 포인터

  int                      iIndent;               // 선택시 그림 이미지 번호

} LVITEM, FAR *LPLVITEM

 

4-2. ListView에 Item 사용하는 방법

 int   j     = 0X00;
 int   nThread = 5;    // 출력 라인
 CString  jTemp;
 LVITEM  lvItem;

 

 while(nThread)
 {
  if(j >= nThread)  { break; }

 

  jTemp.Format("%d", j+1);

  lvItem.mask   = LVIF_TEXT;
  lvItem.iItem  = j;
  lvItem.iSubItem  = 0;
  lvItem.pszText  = "아이템 등록";
  GetListCtrl().InsertItem(&lvItem);

 

  lvItem.mask   = LVIF_TEXT;
  lvItem.iItem  = j;
  lvItem.iSubItem  = 1;
  lvItem.pszText  = "아이템 사용1";
  GetListCtrl().SetItem(&lvItem);

 

  lvItem.mask   = LVIF_TEXT;
  lvItem.iItem  = j;
  lvItem.iSubItem  = 2;
  lvItem.pszText  = "아이템 사용2";
  GetListCtrl().SetItem(&lvItem);

 

  lvItem.mask   = LVIF_TEXT;
  lvItem.iItem  = j;
  lvItem.iSubItem  = 3;
  lvItem.pszText  = "아이템 사용3";
  GetListCtrl().SetItem(&lvItem);

 

  lvItem.mask   = LVIF_TEXT;
  lvItem.iItem  = j;
  lvItem.iSubItem  = 4;
  lvItem.pszText  = "0";
  GetListCtrl().SetItem(&lvItem);

 

  lvItem.mask   = LVIF_TEXT;
  lvItem.iItem  = j;
  lvItem.iSubItem  = 5;
  lvItem.pszText  = "아이템 사용4";
  GetListCtrl().SetItem(&lvItem);

 

  lvItem.mask   = LVIF_TEXT;
  lvItem.iItem  = j;
  lvItem.iSubItem  = 6;
  lvItem.pszText  = "아이템 사용5";
  GetListCtrl().SetItem(&lvItem);

 

  j++;
 }

4-3. 부가 설명

* GetListCtrl().InsertItem(&lvItem);  -> 아이템 페이지 등록, 첫번째 아이템 등록

* GetListCtrl().SetItem(&lvItem);     -> 두번째 아이템 등록

 

5. 전체 Item 삭제하기

GetListCtrl().DeleteAllItems();

 

-- 차후 정리 목록 --

6. 첫번째 아이템 리스트에 이미지 넣기

7. 컬럼간에 구분 선 적용하기

8. 컬럼 제목 누를때 정렬되기

9. Item 선택할때 이벤트 발생하기

10. Item 더블 클릭 할 경우 수정하는 기능 넣기