[C++/MFC] Combo Box 활용

Lachi_·2023년 11월 29일
0

mfc

목록 보기
3/16

지난시간엔 Median Filter를 사용해 이미지의 필터링을 진행하였다.
이번엔 ComboBox 기능을 통해 Mask(Kernel) Size를 선택하고 필터링을 진행할 수 있게 개선해본다.

얼추 이런식으로 디자인을 마쳤다. ComboBox의 유형에는 세 가지가 있다.
1. Simple: 모든 항목이 펼쳐져있고, 선택한 항목을 Edit할 수 있다.
2. Dropdown: 화살표를 눌러 항목을 펼쳐 보아야 하며 Edit할 수 있다.
3. Drop List: 화살표를 눌러 항목을 펼쳐 보아야 하며 선택한 항목은 수정할 수 없다.

지금은 굳이 수정 기능이 들어갈 필요가 없으니 Drop List를 선택했다.

이어서 콤보 박스에 값을 추가해준다. 지금은 3 x 3과 5 x 5 마스크 중에 선택할 수 있게 했다.

	// 콤보박스에 값 추가
	CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO_MSG);
	pCombo->AddString(_T("3x3"));
	pCombo->AddString(_T("5x5"));
	
	// 콤보 박스의 기본 선택 항목을 설정
	m_Combo.SetCurSel(0);  // 0번 인덱스 아이템을 기본으로 선택

m_Combo는 멤버 변수로서 CCombo type이다. 기존의 내용은 크게 수정할 것은 없고, Combo Box를 선택했을 때 filterSize만 변경되도록 수정한다.

void CImageDlg::OnCbnSelchangeComboMsg()
{
	int curSel = m_Combo.GetCurSel(); // 선택된 콤보 박스 아이템 인덱스를 가져옴

	switch (curSel)
	{
	case 0: // "3x3" 선택
		filterSize = 3;
		break;
	case 1: // "5x5" 선택
		filterSize = 5;
		break;
	default:
		break;
	}

	UpdateData(FALSE);
}

Combo Box의 자세한 사용법은 이쪽을 참고하면 될 것 같다.
https://foxlime.tistory.com/99

마지막으로 정리해보자.

Filter Size = 3

Filter Size = 5

profile
개인 저장용. 오류 매우 많음.

0개의 댓글