ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MFC] List Box 사용법 및 응용(InsertString, DeleteString, GetCurSel, GetText,Get Count)
    MFC/Visual C++ 2008 2021. 1. 25. 16:11
    반응형

     이 포스팅에서는 두 개의 리스트 박스를 이용해서, 선택된 행을 다른 리스트 박스에 추가해주는 프로젝트를 만들어 보려고 한다. 

     

     

     

     

    CListBox::AddString

     

    리스트 상자에 문자열을 추가 합니다.

     

    int  AddString(LPCTSTR lpszItem);

     

    매개 변수 lpszItem은 추가 될 null 로 끝나는 문자열을 가리킨다. 

    반환값은 목록 상자에 있는 문자열의 인덱스입니다

     

     

     

     

    CListBox::GetCurSel

     

    단일 선택 리스트 상자에서 현재 선택된 항목의 인덱스를 검색한다.

     

    int GetCurSel() const;

     

    반환값은 현재 선택된 항목의 인덱스이다. 

     

     

     

     

     

    CListBox::InsertString

     

    리스트 상자에 문자열을 삽입한다.

     

    int InsertString(int nIndex, LPCTSTR lpszItem);

     

    매개 변수 nIndex는 문자열을 삽입하라 위치의 인덱스를 지정한다. 이 매개 변수가 -1이면 문자열이 목록의 끝에 추가 된다. 매개 변수 lpszItem은 삽입할 null 종료 문자열을 가리킵니다.

    반환값으로는 문자열이 삽입된 위치의 0부터 시작되는 인덱스이다.

     

     

     

     

    CListBox::DeleteString

     

    리스트 상자에서 n 인덱스 위치에 있는 항목을 삭제한다.

     

    int DeleteString(UINT nIndex);

     

    매개변수 nIndex는 삭제할 문자열의 인덱스를 지정한다.  반환값은 목록에 남아 있는 문자열의 행의 수이다. 

     

     

     

     

    CListBox:;GetText

     

    리스트 상자에서 문자열을 가져온다.

     

    int GetText(int nIndex, LPTSTR lpszBuffer) const;

     

    void GetText(int nIndex, CString& rString) const;

     

    매개 변수 nIndex 가져오려는 행의 인덱스이다.  lpszBuffer 또는 rString은 문자열을 받아올 변수이다. 

     

     

     

     

     

    1. 먼저 listbox  두 개를 도구 상자에서 끌어와 배치하다. 

     

     

     

     

     

    2.  lisbox에 컨트롤 변수를 각각 추가해준다. 변수는 m_listbox1, m_listbox2 로 지정해준다. 

     

     

     

     

     

     

     

     

     

     

    3. Listbox에 초기 값을 넣어주기 위해서 방금 추가한 변수를 이용해 AddString 함수를 이용해 준다. 

     

     

     

     

     

     

     

     

     

    4. 여기까지 진행하면 아래 처럼 프로젝트가 보인다.

     

     

     

     

     

     

     

     

    5. 리스트 박스를 더블 클릭했을 때, 목록을 옮겨 주기 위해서 이벤트 처리기 추가에서 더블 클릭 이벤트를 선택한다.

     

     

     

     

     

     

     

    6. 더블 클릭에 이벤트 처리 함수를 아래 처럼 코딩 해줍니다.

     

    //TestDlg.h

     

    두 개의 이벤트 처리 함수에서 공유 하기 위해서 헤더에 멤버 함수를 추가해 줍니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void CTestDlg::OnLbnDblclkList1()
    {
        // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
        
        int index = m_listbox1.GetCurSel();//리스트 박스에서 현재 선택된 행의 인덱스를 받아온다.
        m_listbox1.GetText(index,str);// 현재 선택된 행의 문자열을 str에 저장한다.
       m_listbox1.DeleteString(index);// 리스트 박스 1번에서는 해당 행을 삭제 해주고
       m_listbox2.InsertString(-1,str);//리스트 박스 2번의 마지막 부분에 해당 행을 추가한다.
     
     
    }
     
    void CTestDlg::OnLbnDblclkList2()
    {
        // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
     
       int index = m_listbox2.GetCurSel();//리스트 박스에서 현재 선택된 행의 인덱스를 받아온다.
       m_listbox2.GetText(index,str);//현재 선택된 행의 문자열을 str에 저장한다.
       m_listbox2.DeleteString(index);//리스트 박스 2번에서는 해당 행을 삭제 하고
       m_listbox1.InsertString(-1,str);//리스트 박스 1번의 마지막 부분에 해당 행을 추가한다.
    }
    cs

     

     

     

     

     

     

     

    7. 이제 컴파일을 완료해서 실행하면

    728x90

    댓글

Designed by Tistory.