[MFC] 콤보 박스(Combo Box), 체크 박스(Check Box)

안녕하세요 오늘은 콤보 박스와 체크 박스에 대해 알아보겠습니다.

1. 콤보 박스

도구 상자에서 Combo Box를 만들어 줍니다.

Combo Box 속성에서 ID는 IDC_COMBO_TEST로 해주시고 Type은 Drop List로 해줍니다.

Combo Box를 우클릭하셔서 변수 추가를 선택합니다.

변수명을 m_cbTest로 입력한 뒤 마침을 선택합니다.

그러면 헤더 파일에 아래와 같이 입력이 됩니다.

CComboBox m_cbTest;

OnInitDialog에 아래와 같이 초기화를 해줍니다.

m_cbTest.InsertString(0, _T("1번째"));
m_cbTest.InsertString(1, _T("2번째"));
m_cbTest.InsertString(2, _T("3번째"));

m_cbTest.SetCurSel(0);

이 상태로 실행을 시키면 아래와 같이 표시가 됩니다.

하지만 이 상태는 표시만 할 뿐, 우리는 선택을 하고나서 선택한 텍스트를 처리할 수 있어야겠죠?
아래와 같이 Combo Box를 우클릭한 뒤 이벤트 처리기 추가를 선택합니다.

CBN_SELCHANGE를 선택한 뒤 추가 및 편집 버튼을 선택합니다.

그러면 아래와 같이 이벤트 처리 함수가 생기는데 내부이 아래와 같이 입력합니다.

void CMFCApplication1Dlg::OnCbnSelchangeComboTest()
{
	int iSel = m_cbTest.GetCurSel();
	if (CB_ERR != iSel)
	{
		CString sSel;
		m_cbTest.GetLBTest(iSel, sSel);
	}
}

읽어온 텍스트 값을 표시하기 위해 대화 상자에 Static Control을 만들어 줍니다.

적당히 늘려주시고 Static Control ID를 IDC_STATIC_TEST로 변경합니다.

Static Control을 우클릭하신 뒤 변수 추가를 선택한 뒤 변수 이름에 m_stTest를 입력하신 후 마침 버튼을 클릭합니다.

이제 다시 Combo Box 이벤트 처리 함수로 와서 아래와 같이 입력합니다.

void CMFCApplication1Dlg::OnCbnSelchangeComboTest()
{
	int iSel = m_cbTest.GetCurSel();
	if (CB_ERR != iSel)
	{
		CString sSel;
		m_cbTest.GetLBTest(iSel, sSel);

		m_stTest.SetWindowText(sSel);
	}
}

실행 시켜서 확인해 봅니다.

2. 체크 박스

    대화 상자에 Check Box를 넣어 줍니다.

    위에서 했던 것처럼 Check Box 선택 후 ID를 IDC_CHECK_TEST로 바꿔줍니다. 그리고 Check Box 우클릭하신 뒤 변수 추가를 선택 하고 변수 이름에 m_chkTest를 입력한 뒤 마침 버튼을 선택합니다. 그러면 헤더파일에 아래와 같이 추가되어있을겁니다.

    CButton m_chkTest;
    

    대화 상자에서 Check Box 우클릭하신 뒤 이벤트 처리기 추가를 선택합니다. 그리고 BN_CLICKED선택 후 추가 및 편집을 선택합니다.

    그러면 이벤트 처리 함수가 생기는데 아래와 같이 함수 내부에 입력 합니다.

    void CMFCApplication1Dlg::OnBnClickedCheckTest()
    {
    	BOOL bCheck = m_chkTest.GetCheck();
    }
    

    자 이제 거의다 왔네요.

    읽어 온 Check Box 값을 표시해야겠죠? 위에서 했던 것처럼 Static Control 하나 추가해주시고요, ID를 IDC_STATIC_TEST2로 합니다.

    방금 추가한 Static Control 우클릭을 하신 뒤 변수 추가를 눌러준 뒤 변수 이름에 m_stTest2입력 후 마침 버튼을 선택합니다.

    그리고 다시 Check Box 이벤트 처리 함수로 돌아와서 아래 함수를 추가 합니다.

    void CMFCApplication1Dlg::OnBnClickedCheckTest()
    {
    	BOOL bCheck = m_chkTest.GetCheck();
    	if (bCheck)
    		m_stTest2.SetWindowText(_T("체크"));
    	else
    		m_stTest2.SetWindowText(_T("체크 해제"));
    }
    

    이제 프로그램 실행 뒤 Check Box를 눌러 봅시다.

    오늘은 Combo Box와 Check Box에 대해 알아봤습니다.