본문 바로가기

개발/mfc

mfc, combobox 만들기, 고치기

반응형

MFC, Combo box 

 

목차

1. 만들기

2. 변수 연결

3. 기본 함수

5. 글자 수 늘이기

6. 창 크게 하기

 

~~~~~~~~~~~~~~~~~~~~~~~~~~

1. 만들기

  도구상자(ToolBox) > Combo Box > 적당한 위치에 그리기

 

  > 자주 쓰는 속성 은 정렬(Sort) 과 형식(Type) 입니다.

  - 정렬 : 새 항목이 추가 될때 마다 자동으로 정렬 할지 여부

  - 형식 : 3가지 : Simple DropDown, DropList

    -- simple : 모든 항목이 미리 펼쳐져있으며 선택한 항목은 Edit 컨트롤로서 수정할 수 있습니다.

    -- DropDown : 화살표를 눌러서 항목을 펼쳐야 하며 선택한 항목은 Edit 컨트롤로서 수정할 수 있습니다.

    -- DropList : 화살표를 눌러서 항목을 펼쳐야 하며 선택한 항목은 Edit 컨트롤로서 수정할 수 습니다.

 

2. 변수 추가

> Combo Box 마우스로 선택 > Project > Add Variables   또는

> Combobox 오른쪽 마우스 선택 > Add Variables

> 변수 이름은 마음데로 만들어도 되는데, member 변수라는 뜻으로 앞에 m_ 를 붙여 주는게 나중에 볼때 편하다.

 

2b. Event 추가

> simple 또는 DropDown 의 경우 값이 수정 될때 발생 되는 이벤트를 추가해 보면,

> ComboBox 선택 > Properties 선택 > Event 선택 > CBN_EDIT_CHANGE 선택 하여 추가 한다

그러면 값이 바뀔때 마다 Event 발생 하여 만들어진 함수가 불려 진다.

 

 

3. 기본 함수

> item 추가  : ~.AddString(CString);

      m_Log_Cb_Send.AddString(_T("Bae"));
      m_Log_Cb_Send.AddString(_T("SaGoa"));

또는

      GetDlgItem( IDC_Log_COMBO_Send )-> AddString(_T("Bae"));

 

> 특정 위치( index ) 값 출력  : ~.SetCurSel(int);

    m_Log_Cb_Send.SetCurSel(index);

 

> 현재 선택된 위치 가져 오기 : 

       index = m_Log_Cb_Send .GetCurSel();

 

> 현재 선택된 위치 항목 가져 오기 :    ~ .GetLBText(int, CString);

     위치 선택으로 바뀐 경우

     CString cS; 
     int index = m_Cb_Send .GetCurSel();

      m_Cb_Send.GetLBText(index, cS);

      간단히 한줄로 하면,

      m_Cb_Send .GetLBText(m_Cb_Send.GetCurSel() , cS);   

또는

     직접 값을 수정 하여 바뀐 경우 ( simple 또는 DropDown ) 에 주로 쓰는

     CString cS; 
     GetDlgItemText(IDC_Log_COMBO_Send, cS ); //
    cS = cS.Trim(); // AfxMessageBox( cS ); 첫글자 바뀔때는 안보이지만, 두번째 부터는 보입니다.

 

위치 선택이든 직접 값을 수정하든 둘다 변경 되었을때 가져 오는 것

 직접 값을 바꾸면, GetCurSel()  == CB_ERR 가 되는것 이용 한다.

   CString cS;

   if(m_BaudRate.GetCurSel() == CB_ERR ) GetDlgItemText(IDC_s_COMBO_Baud, cS);  
   else m_BaudRate.GetLBText(m_BaudRate.GetCurSel(),cS); 

 

 

> 숨기기 , 보이기 : 

m_Log_Cb_Send.ShowWindow(SW_HIDE);    m_Log_Cb_Send.ShowWindow(SW_SHOW);

 

> 활성화, 비 활성화

m_Log_Cb_Send.EnableWindow(true);    m_Log_Cb_Send. EnableWindow(false);

 

 

4. 글자 수 늘이기

CComboBox 는 기본적으로 그 크기 만큼 글자 수가 들어 갑니다.

이것을 늘리기 위해서는 속성창에서 할 수 없고, rc 파일에서 CBS_AUTOHSCROLL  속성을 추가 해주면 됩니다

COMBOBOX        IDC_Log_COMBO_Send,55,7,174,30,CBS_DROPDOWN | WS_VSCROLL | CBS_AUTOHSCROLL

 

5. 창 크게 하기

Dialog 창에서 ComboBox 의 v 부분을 누르면 목록 창위치 변경이 아니고 크기 조절을 할 수 있읍니다.

 

 

6. class CComboBox:pub CWnd

▷ CComboBox::AddString - 스트링을 더함. 
▷ CComboBox::CComboBox - ComboBox 오브젝트를 생성(구성). 
▷ CComboBox::Clear -현재 선택을 지움. 
▷ CComboBox::CompareItem - 새로운 리스트 항목의 상태적 위치를 결정. 
▷ CComboBox::Copy - 현재 선택을 Copy. 
▷ CComboBox::Create - CComboBox를 생성. 
▷ CComboBox::Cut - 제거된 텍스트를 복사. 
▷ CComboBox::DeleteItem - 항목이 Combo 박스에서 제거. 
▷ CComboBox::DeleteString - 스트링을 제거. 
▷ CComboBox::Dir - 리스트를 더함. 
▷ CComboBox::DrawItem - 양상이 변할 때 불려짐. 
▷ CComboBox::FindString - 첫 번째 스트링을 찾음. 
▷ CComboBox::FindStringExact - 첫 번째 리스트 박스 스트링을 찾음. 
▷ CComboBox::GetCount - 항목의 수를 회복. 
▷ CComboBox::GetCurSel - 현재 선택된 항목의 색인을 찾음 
▷ CComboBox::GetDroppedControlRect - 스크린 좌표를 되찾음. 
▷ CComboBox::GetDroppedState - 리스트 박스가 보일지를 결정. 
▷ CComboBox::GetEditSel - 시작과 끝나는 문자의 위치를 얻음. 
▷ CComboBox::GetExtendedUI - 디폴트, 확장 사용자 인터페이스의 결정. 
▷ CComboBox::GetItemData - 항목과 관련된 비트값을 회복. 
▷ CComboBox::GetItemDataPtr - 포인터로서 관련된 비트 값을 회복. 
▷ CComboBox::GetItemHeight - 리스트 항목의 높이를 회복. 
▷ CComboBox::GetLBText - 리스트 박스로 부터 스트링을 얻음.
▷ CComboBox::GetLBTextLen - 스트링의 길이를 지정. 
▷ CComboBox::InsertString - 스트링의 삽입. 
▷ CComboBox::LimitText - 텍스트의 길이를 제한. 
▷ CComboBox::MeasureItem - Combo 박스 치수를 결정하기 위해 불려짐. 
▷ CComboBox::Paste - 현재 커서 위치에서 편집 제어로 삽입. 
▷ CComboBox::ResetContent - 모든 항목의 제거. 
▷ CComboBox::SelectString - 스트링을 선택, 복사. 
▷ CComboBox::SetCurSel - 스트링을 선택. 
▷ CComboBox::SetEditSel - 편집 제어에서 문자들을 선택. 
▷ CComboBox::SetExtendedUI - 디폴트, 확장 사용자 인터페이스의 선택. 
▷ CComboBox::SetItemData - 항목과 관련된 값을 정함. 
▷ CComboBox::SetItemDataPtr - 포인터에 대한 관련된 값을 정함. 
▷ CComboBox::SetItemHeight - 높이를 지정. 
▷ CComboBox::ShowDropDown - 리스트 박스를 보여주거나 숨김. 

반응형