20160211 - MFC : 1. 33번 폼 리스트 값 처리 관련해서 좀 살펴보다가,

2016. 2. 11. 17:55·TEMP/내용 정리중인 글들..

[MFC] 윈도우 프로그래밍 기초 - List Control

 

개념은 아래의 영역처럼 우리가 직접 List Control을 구현해보는 것이 기본 목표입니다.

 

2015:03:31 23:33:29

 

개념은 기본 멤버함수 몇 개 소개하는 것으로 시작하겠습니다.

 

1. CListCtrl 클래스의 멤버함수

 

 * InsertColumn

 

 int InsertColumn ( int nCol,

                           LPCTSTR lpszColumnHeading,

                           int nFormat = LVCFMT_LEFT,

                           int nWidth = -1,

                           int nSubItem = -1 );

 

-> nCol : 컬럼 헤더의 인덱스 값

-> lpszColumnHeading : 컬럼 헤더에 표시할 문자열

-> nFormat : 컬럼 헤더에 표시할 문자열의 정렬방식을 지정하며, 다음의 값들을 지정하여 사용가능.

-> Return 값 : 컬럼 추가에 성공하면 컬럼의 인덱스를 반환하며, 실패하면 -1을 반환한다.

 

 포멧 값

 정렬 방식

 LVCFMT_RIGHT

 오른쪽 정렬

 LVCFMT_LEFT

 왼쪽 정렬

 LVCFMT_CENTER

 중앙 정렬

 

-> nWidth : 컬럼 헤더의 너비

-> nSubItem : 연관된 하위 항목의 인덱스

-> Return 값 : 컬럼 추가에 성공하면 컬럼의 인덱스를 반환하며, 실패하면 -1을 반환한다.

 

 * DeleteColumn

 BOOL DeleteColumn ( int nCol ) ;

 

 -> nCol : 삭제하고자 하는 컬럼의 인덱스

 -> Return 값 : 삭제에 실패하면 0 (FALSE)을, 성공하면 1 (TRUE)을 반환한다.

 * InsertItem

 int InsertItem ( const LVITEM* pItem ) ;

 

-> pItem : 리스트 컨트롤에 등록할 LVITEM 구조체 포인터

-> Return 값 : 성공 시 추가된 아이템의 인덱스, 실패 시 -1

 * SetItemText

 BOOL SetItemText ( int nItem, int nSubItem, LPCTSTR lpszText ) ;

 

-> nItem : 아이템 인덱스

-> nSubItem : 서브 아이템 인덱스

-> lpszText : 출력할 텍스트 변수의 포인터

-> Return 값 : 실패시 0(FALSE), 성공시 1(TRUE) 반환 

 * GetItemText

 CString GetItemText ( int nItem, int nSubItem ) const

 

-> nItem : 아이템 인덱스

-> nSubItem : 서브 아이템 인덱스

-> Return 값 : 지정한 아이템 또는 서브 아이템의 문자열

 * DeleteItem

 BOOL DeleteItem ( int nItem );

 

-> nItem : 아이템 인덱스

-> Return 값 : 성공시 TRUE(1), 실패시 FALSE

 * DeleteAllItems

 BOOL DeleteAllItems( );

 

-> Return 값 : 성공시 TRUE, 실패시 FALSE

 

2. 결과물

 

 

2015:04:01 00:07:24

 

저희가 만들 목표입니다.

교제들 정말 많이 봤습니다. 약 5권 정도 봤는데, 오해 소지가 있는 예제들이 정말 많아서 순수하게 List Control을 만드는 방법을 하는 것이

맞다고 판단했습니다.

 

3. 레이아웃

 

List Control에 변수를 만들어 줍니다.

 

 컨트롤 이름

 범주(T)

 변수 이름(N)

 비고

 List Control

 Control

 m_ListView

 

 

 

2015:04:01 00:18:42

 

ListControl 속성의 View를 Report로 바꿔줍니다.

 

 

4. 코드

 

 

 BOOL CListControlDlg::OnInitDialog(){

 

           (중략)

            // TODO: 여기에 추가 초기화 작업을 추가합니다.

           m_ListView.InsertColumn(0, _T("번호"), NULL, 50);
           m_ListView.InsertColumn(1, _T("이름"), NULL, 150);
           m_ListView.InsertColumn(2, _T("비고"), NULL, 50);

 

           // LVITEM - 삽입 데이터 보관 장소
           LVITEM firstitem = { 0 } ;  LVITEM seconditem = { 0 } ;


           firstitem.mask = LVIF_TEXT;
           firstitem.iItem = 0;

 

           seconditem.mask = LVIF_TEXT;
           seconditem.iItem = 0;

 

           // 데이터 삽입 - Firstitem
           m_ListView.InsertItem(&firstitem);

 

           // 데이터 값 넣기 - Firstitem
           m_ListView.SetItemText(0, 0, _T("1번"));
           m_ListView.SetItemText(0, 1, _T("곰돌이"));
           m_ListView.SetItemText(0, 2, _T("야호"));

 

            // 데이터 삽입 - Seconditem
           m_ListView.InsertItem(&seconditem);
 
           // 데이터 값 넣기 - Seconditem
          m_ListView.SetItemText(0, 0, _T("2번"));
          m_ListView.SetItemText(0, 1, _T("돼지"));
          m_ListView.SetItemText(0, 2, _T("만세"));

        

          UpdateData(FALSE);

 

          return TRUE;  // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
}

 (여러분이 생성한 Project 명)dlg.cpp 파일 내 코드

 

따로 긴 설명없이 한 방에 이해되셨나요??

더 이상 설명이 필요없는 코드입니다.

 

이걸 응용해서 보통 나오는 문제가 Process 내용 출력 문제도 될 수 있습니다.

이건 제가 시간이 되면 올려 드리는데 기본에 충실한게 기초 강의에 적합하다고 판단했으니 이해바랍니다.


이런 식으로 할 수 있다. cRect 를 사용하지 않고 이런 식으로 처리하여 값 처리를 일반적인 리스트 컨트롤로 할 수 있다. 그렇다면, InsertColumn 이 부분을 내부적으로 옵션을 달아주어 선택이 안되도록 할 수 있지 않을까??


 










'TEMP > 내용 정리중인 글들..' 카테고리의 다른 글

MFC 에 대한 정의 및 단점, 장점  (0) 2016.02.11
20160211 - MFC : 1. 트리 컨트롤 에 관해서,  (0) 2016.02.11
20160205 - MFC : 5. WM_USER 메시지에 관해 수신 및 처리 에 대해서  (0) 2016.02.05
20160205 - MFC : 4. CPaintDC 를 살펴보던 중, 여러 DC 들 또한 잠시 살펴보자.  (0) 2016.02.05
20160205 - MFC : 3. DDX_Control, 가상 함수 DoDataExchange 함수의 리스트 박스 컨트롤  (0) 2016.02.05
'TEMP/내용 정리중인 글들..' 카테고리의 다른 글
  • MFC 에 대한 정의 및 단점, 장점
  • 20160211 - MFC : 1. 트리 컨트롤 에 관해서,
  • 20160205 - MFC : 5. WM_USER 메시지에 관해 수신 및 처리 에 대해서
  • 20160205 - MFC : 4. CPaintDC 를 살펴보던 중, 여러 DC 들 또한 잠시 살펴보자.
쭌의 숲 속 도서관
쭌의 숲 속 도서관
  • 쭌의 숲 속 도서관
    쭌의 숲 속 도서관
    쭌의 숲 속 도서관
  • 전체
    오늘
    어제
    • 분류 전체보기 (84)
      • [Programming] Language (13)
        • C (10)
        • JavaScript (2)
        • JavaScript (WEB) (0)
        • TypeScript (0)
        • 기술 면접 (1)
        • Python (0)
      • [Programming] Framework (1)
        • Nest.js (1)
        • Svelte (0)
      • [Cloud] Amazon Cloud (0)
        • AWS-SDK (0)
        • Architecture (0)
        • Lambda (0)
        • IoT Core (0)
        • RDS (0)
      • Language (1)
        • English (1)
      • OS (7)
        • Window (7)
        • Linux (0)
      • Certificate (3)
        • 네트워크 관리사 2급 (2)
        • [기본] AWS Certified Cloud Pr.. (1)
        • [준전문가] AWS Certified Soluti.. (0)
      • 유용한 사이트 (3)
      • 이벤트 및 행사소식 (0)
      • ETC (23)
        • 프로그램 (5)
        • 운동 (8)
        • IT (2)
        • 생활 (2)
        • 쇼핑몰 (3)
        • 제품 후기 (3)
        • 여행 (0)
        • 맛집 (0)
      • TEMP (33)
        • 내용 정리중인 글들.. (33)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • WoWCat
  • 공지사항

  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
쭌의 숲 속 도서관
20160211 - MFC : 1. 33번 폼 리스트 값 처리 관련해서 좀 살펴보다가,
상단으로

티스토리툴바