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

 

이번 글은 직접 List Control을 구현해보는 것이 기본 목표입니다.

 

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

 

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. 결과물

 

 

 

 

3. 레이아웃

 

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

 

 컨트롤 이름

 범주(T)

 변수 이름(N)

 비고

 List Control

 Control

 m_ListView

 

 

 

 

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("도도1-1"));
           m_ListView.SetItemText(0, 2, _T("도도1-2"));

 

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

        

          UpdateData(FALSE);

 

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

 dlg.cpp 파일 내 코드

 

 

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 공통 컨트롤의 이해?

 

드디어 공통 컨트롤까지 여러분께서는 오셨습니다.

정말 축하드립니다.

 

좀만 더 하시면 윈도우 프로그래밍의 기본기는 다 익히시는 겁니다.

 

아자 아자 화이팅!

 


1. 공통 컨트롤에 앞서 또 다시 살펴보는 MFC...

 

MFC에서는 윈도우에서 기본적으로 제공하는 기본 컨트롤들 이외에도 여러 응용 프로그램에서 공통적으로 빈번히 사용되는 컨트롤들을 모아서

공통 컨트롤(Common Control)이라는 것을 제공합니다.

 

공통 컨트롤은 아래와 같은 순서로 처리됩니다.

 

 


2. Visual Studio 2013에서 공통 컨트롤

 

보면 약간 허무하시겠지만, Visual Studio 2013에선 공통 컨트롤 개념을 분리한 게 아니라 대화상자 편집기라는 항목으로 일반 컨트롤과 함께 통합했습니다.

구 버전으로 개발해왔던 개발자들에게는 이들 개념은 엄밀히 말해 분리해서 생각하는 게 맞다는 사람도 있을 수 있으니 이 정도 선에서 알아두셨으면 합니다.

 

 


3. 컨트롤의 종류

 

거의 기능들을 일반 프로그램 사용하시면서 한 번쯤을 눌러보셨을 법한 것들입니다.

긴 설명 안하는 것 부분들은 여러분들의 컴퓨터 사용 센스로 추론하시기 바랍니다.

 

 

 컨트롤 명 

 설명

 

 (List Control)

 두 개 이상의 값을 갖는 데이터들을 표현하기 위해서

사용되는 컨트롤

 

(Spin Control)

 증감, 줄이기 이런 목적으로 사용됨.

 

 (Slider Control)

 
 

(IP Address Control<VS 2013>  = Network Address Control<VS 2008 기준>) 

 사용자로부터 IP주소를 입력받기 위해서 사용되는

 컨트롤  

 

(Progress Control)

 

 프로그래스 컨트롤은 진행 상태를 한 눈에 보여주는

 컨트롤입니다.

 

  (Tab Control)

 탭 컨트롤은 여러분들도 많이 일상 프로그램

 사용하면서 사용하셨겠지만,

 

 각각의 탭으로 분리해서 표현할 수 있습니다.

 

 (Month Calendar Control)

 

 월 단위로 출력

 종류는 4가지로 출력됩니다.

 

 궁금하시면,

 

 

 

 날짜 클릭해서 4가지 종류 다 체험해보시기 바랍니다.

 

 

 (Data Time Picker)

 

 날짜와 시간을 입력받기 위해서 사용하는 컨트롤

 

 (Tree Control)

 부모와 자식 그리고 형제 사이의 연결 관계를

 표시한 컨트롤 

 

 


3. 맺는글

 

이건 솔직히 어느정도 센스 생기면 "Google 검색" 또는 "Microsoft 공식 설명서"를 찾아보는 게 빠릅니다.

반응형

+ Recent posts