[MFC] ListBox 컨트롤 사용 방법

[MFC] ListBox 사용 방법

 

이번 포스팅에서는 MFC환경에서 ListBox 컨트롤을 어떻게 사용하는지에 대하여 알아보도록 하겠습니다.

 

ListBox 컨트롤이란?


ListBox 컨트롤은 간단한 문자열 여러 개들 보여줄 때 사용하는 컨트롤이라고 이해를 하시면 좋겠습니다.

 

그러면 실제 ListBox 컨트롤을 이용하여 각 데이터를 어떻게 삽입하고 검색 및 삭제를 어떻게 하는지 아래 실습을 통하여 알아보도록 하겠습니다.

 

첫 번째로 대화상자 기반의 MFC 프로젝트를 생성해 주시기 바랍니다.

생성하는 방법은 아래와 같이 진행을 해주시면 되겠습니다.




 

그리고 아래와 같이 컨트롤을 배치 해주시기 바랍니다.



 

그리고 Insert string, Add string, FindString, FINDEXACT 각각 네 개의 버튼을 더블 클릭 하시고 Click 이벤트 핸들러 함수 안에 아래와 같은 코드들을 작성해 주시기 바랍니다.


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

void CtestDlg::OnBnClickedButtonInsert()

{

    UpdateData(TRUE);

    m_List.InsertString(0, m_strInput); //정렬 기능 X

 

    m_strInput = _T("");

    UpdateData(FALSE);

}

 

 

void CtestDlg::OnBnClickedButtonAdd()

{

    UpdateData(TRUE);

    m_List.AddString(m_strInput); //정렬 기능

 

    m_strInput = _T("");

    UpdateData(FALSE);

}

 

 

void CtestDlg::OnBnClickedButtonFind()

{

    UpdateData(TRUE);

    CString strTemp = _T("");

    CString strFind = _T("");

 

    int nIndex = m_List.FindString(-1, m_strInput);

 

    if(nIndex != LB_ERR)

    {

        m_List.GetText(nIndex, strFind);

        strTemp.Format(_T("%d:%s"), nIndex, strFind);

        AfxMessageBox(strTemp);

    }

    else

    {

        AfxMessageBox(_T("일치하는 문자가 없습니다."));

    }

}

 

 

void CtestDlg::OnBnClickedButtonFindexact()

{

    UpdateData(TRUE);

    CString strTemp = _T("");

    CString strFind = _T("");

 

    int nIndex = m_List.FindStringExact(-1, m_strInput);

 

    if(nIndex != LB_ERR)

    {

        m_List.GetText(nIndex, strFind);

        strTemp.Format(_T("%d:%s"), nIndex, strFind);

        AfxMessageBox(strTemp);

    }

    else

    {

        AfxMessageBox(_T("일치하는 문자가 없습니다."));

    }

}

 

Colored by Color Scripter

cs

 

위의 코드에서 InsertString(), AddString() 함수들은 ListBoxz컨트롤에 문자열 항목을 추가해 주는 함수입니다.

 

둘 다 ListBox 컨트롤에 Item을 추가시켜 주는 것은 동일하나 차이점이 있다면 InsertString()함수는 정렬 기능이 없지만 AddString()함수는 문자열이 추가되면 내림차순으로 문자열을 자동 정렬해주는 기능이 있습니다.


이와 같은 특징들을 알고 사용하시면 되겠습니다.

 

그리고 ListBox안에 내부적으로 저장되어 있는 문자를 검색하기 위해 사용되는 함수는 FindString(), FindStringExact() 함수 두 가지가 있습니다.


위 함수는 문자열을 검색하여 해당 같은 문자열이 있을 경우 해당 문자열이 위치하고 있는 Index를 반환해줍니다.

 

위와 같이 코드를 작성 다 하셨다면 실행 결과는 아래와 같이 될 것입니다.


 

실행 결과 화면


[1. InsertString() 함수로 항목 추가]



 

[2. AddString() 함수로 항목 추가]



[3. 문자열 검색]



 

이로써 간단히 MFC에서 ListBox 컨트롤 사용 방법에 대해서 알아보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글(0)

Designed by JB FACTORY