본문 바로가기
1_ 맛있는프로그래밍/C# and Visual C++

MFC - 리스트박스 관련, 숫자 문자 상호변환

by 준환이형님 2011. 4. 6.

요즘은  다시 MFC를 만지고 있답니다. 만지게 되는 종목은 계속 뱅글뱅글 도나봐요..:D
자주 찾게 되는 부분을 포스팅 해 둡니다.


[ 숫자 - 문자, 문자 - 숫자 변환 ]

stoi() 함수는 String To Integer 즉, 문자열을 정수형으로 바꾸는 함수

1. 숫자를 문자열로 바꿀때

nt a = 100;
CString str;
str.Format(_T("%d"), i);

즉, CString 의 맴버 함수에는 Format() 이라는 함수가 존재하고 이는 
C에서 printf 처럼 출력 가능하게 해줍니다. 이를 통해 문자열로 바꾸면 됩니다.

2. 문자열을 숫자로 바꿀때

int a;
CString str = "100";
a = _tstoi(str);


[ 리스트박스(List Box) ]

 

1. 일단 대화상자에 리스트박스를 붙인다.

 


2. Class Wizard를 이용하여 컨트롤 변수를 등록한다.

   "m_ctrListBox"라고 등록했다고 하자.

 


3. 리스트박스에 리스트 추가

   m_ctrListBox.AddString("문자열");                 // 문자열이 리스트의 맨뒤에 추가 된다.

   m_ctrListBox.InsertString(nIndex, "문자열");   // 문자열이 nIndex위치에 추가 된다.

 

   주의! 리스트박스의 Styles 옵션에서 Sort옵션이 체크 되어있으면 추가된 문자열은 자동으로 가나다 순으로 정력된다. Sort옵션을 끄도록 하자.

 


4. 리스트박스에서 선택된 리스트 알아보기

   4-1. 리스트박스에서 리스트를 선택하면 LBN_SELCHANGE란 메시지가 발생한다.

   4-2. 여기서

      int nIndex = m_ctrListBox.GetCurSel(); // 선택된 위치의 인덱스가 리턴된다.

      CString      str;                                    // 만일 선택되어 있지 않다면 -1이 리턴된다.

      m_ctrListBox.GetText(nIndex, str);        // 인덱스 위치에 해당하는 리스트의 문자열을 가져온다.

 

5. 리스트에는 문자열뿐만 아니라 DWORD크기의 값을 저장할 수 있는 곳이 있다.

   m_ctrListBox.SetItemData(nIndex, 1000);     // nIndex위치의 리스트에 1000을 저장한다.

   int   i = m_ctrListBox.GetItemData(nIndex);  // nIndex위치의 리스트에 있는 값을 가져온다.

 


6. 리스트박스에서 선택된 리스트 제거

   m_ctrListBox.DeleteString(nIndex);      // nIndex위치의 리스트를 제거한다.

 


7. 리스트박스의 모든 리스트 제거

   m_ctrListBox.ResetContent();


8.  리스트 박스 마지막 줄 표시


 int nCount = m_ctrl_listbox_msg.GetCount() ;

 if ( nCount > 0 )

  m_ctrl_listbox_msg.SetSel( nCount-1 ) ; 

혹시 안되면 SetCurSel 이런 식으로

 list->SetCurSel(nCount-1);