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 - 리스트 박스를 보여주거나 숨김.
'개발 > mfc' 카테고리의 다른 글
mfc, Enter, ESC 등 입력 키 감지 (0) | 2024.11.14 |
---|---|
mfc, Project 만들기 (0) | 2024.10.31 |
mfc. diaog 위치 가져오기, 부모 옆에 설정하기 source example (0) | 2024.09.19 |
mfc AfxMessageBox 응답 받기 (0) | 2024.05.24 |
mfc button 에 image 올리기, sample source (0) | 2024.05.21 |