728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - (라디오 버튼) + 그룹박스

 

정말 쉽습니다.

 

http://yyman.tistory.com/506 / [MFC] 윈도우 프로그래밍 기초 - 체크 박스 + 버튼 응용 실습 예제

 

오늘 글의 초점은 아래의 결과물을 만드는 것입니다.

 


1. 결과물

 

결과물 먼저 볼까요?

 

 


2. 실습

 

a. 레이아웃 디자인

 

 

 

 

 앞에 글의 레이아웃 모습

 우리가 만들 레이아웃

 

현명하고 지혜로운 사람들은 잘 아시겠지만, 기존꺼 그대로 이어서 하시면 됩니다.

Radio 박스 레이아웃 설계만 하나 알려드리겠습니다.

 


a-1) Radio 박스 설계

 

* 이해를 위한 큰 나무 보기

 

 

* 주의사항 - Radio 박스는 체크박스 컨트롤과 달리 Group 항목을 설정해주지 않으면,

CButton 클래스 형식의 맴버 함수를 만들 수 없습니다.

추가된 라디오 버튼들을 하나씩 선택하여 속성 창에 있는 속성 항목에서 Group 항목을 True로 변경해야 합니다.

 

전 귀찮아서 위의 그림처럼 전체 다 선택했습니다. 그래도 상관없습니다.

 

 

 

 Group -> False 항목을

 

 True로 바꿔주고 변수 추가합니다.

 

 

컨트롤 ID 

 변수명

 Control 유형

 범주(T)

 변수 유형

 IDC_RADIO1

 m_RadioButton1

 라디오 박스

 Control

 CButton

 IDC_RADIO2 

 m_RadioButton2 

 라디오 박스 

 Control 

 CButton 

 IDC_RADIO3

 m_RadioButton3

 라디오 박스

 Control

 CButton

 IDC_STATIC1 

 

 그룹박스

 

 

 IDC_STATIC2 

 

 그룹박스

 

 

 

추가해서 만들 아이템의 구성요소입니다.

다 만들고 나면, 다시 Radio 1, 2, 3을 선택합니다.

 

아래와 같이 설정합니다.

 

 

 

 

 Group -> True 항목을

 

 False로 바꿔줍니다.

 

그러면 Radio 버튼 설계는 끝났습니다.

 


b. 코드

 

 

 

 (사용자 프로젝트명)ControlDlg.cpp

 

 

 

 

  (사용자 프로젝트명)ControlDlg.cpp 내에 BOOL CMFCControlDlg::OnInitDialog() 내부에 구현

 지난 번 강의에선 SetDlgItem( )로 컨트롤 Caption을 변경하였는데,

 이번에는 우리가 만든 변수를 직접 접근하여 변경하는 방법을 넣었습니다.

 같은 동작을 하니깐 오해하지 말고 두 가지 방법이 있구나 이 정도로 아셨으면 합니다.

 

 

 

 void CMFCControlDlg::OnBnClickedButton1()
 {
        // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

         CString szMsg_Name;
         CString szMsg_Menu;
         CString szMsg;

 

         if (m_CheckBox1.GetCheck() == BST_CHECKED)
         {
              GetDlgItemText(IDC_CHECK1, szMsg_Name);
              szMsg_Name.Append(_T("님\n"));
         }

         else if (m_CheckBox2.GetCheck() == BST_CHECKED)
         {
              GetDlgItemText(IDC_CHECK2, szMsg_Name);
              szMsg_Name.Append(_T("님\n"));
         }

         else if (m_CheckBox3.GetCheck() == BST_CHECKED)
        {
              GetDlgItemText(IDC_CHECK3, szMsg_Name);
              szMsg_Name.Append(_T("님\n"));
        }

 

         // 추가 - Radio 예제

        if (m_RadioButton1.GetCheck() == BST_CHECKED)
        {
              //GetDlgItemText(IDC_RADIO1, szMsg);
               m_RadioButton1.GetWindowTextW(szMsg_Menu);
               szMsg_Menu.Append(_T("- 요리 형"));
        }

         else if (m_RadioButton2.GetCheck() == BST_CHECKED)
        {
              //GetDlgItemText(IDC_RADIO2, szMsg);
               m_RadioButton2.GetWindowTextW(szMsg_Menu);
               szMsg_Menu.Append(_T("- 요리 형"));
         }

 

          else if (m_RadioButton3.GetCheck() == BST_CHECKED)
         {
               //GetDlgItemText(IDC_RADIO3, szMsg);
               m_RadioButton3.GetWindowTextW(szMsg_Menu);
               szMsg_Menu.Append(_T("- 요리 형"));
         }

 

         szMsg_Menu.Append(_T("\n음식하세요."));

         szMsg.Append(szMsg_Name);
         szMsg.Append(szMsg_Menu);

         AfxMessageBox(szMsg);

 

 }

 (사용자 프로젝트명)ControlDlg.cpp 내에 void CMFCControlDlg::OnBnClickedButton1() 내부에 구현

 

 지난 번 글에서는 GetDlgItem( )로 컨트롤 Caption의 값을 CString 형 변수에 전달하였는데,

 이번에는 만든 변수를 접근하여 가져오는 방법을 넣었습니다.

 

 

구현 끝... 수고하세요.

반응형

+ Recent posts