Study/C, C++ (MFC, UE)

[C++, MFC] Radio button 그룹화

BlueBright 2018. 5. 3. 18:43

1. UI를 만든다.








2. 각각의 라디오 버튼의 속성을 지정한다.

- 여기서 중요한 속성은 Group과 ID 이다.

- ID를 통일 시키고 뒤의 숫자로 구분합니다.

- Group과 Tabstop 의 경우 첫번째 라디오 버튼만 True 나머지는 False로 설정합니다. (마지막 버튼도 TRUE로 설정하라는 글도 간혹 있는 것 같습니다.)













3. 라디오 버튼을 추가한 다이얼로그 헤더에 (저 같은 경우에는 ServerCppDlg.h 파일)에 변수와 함수를 선언합니다.

- 변수 : UINT m_radioProgramMode 

변수명은 자유

라디오 버튼 클릭시 해당 값을 저장하는 용도

-1 : 선택안함

0 : 라디오 버튼 첫번째 자리

1 : 라디오 버튼 두번째 자리

2 : 라디오 버튼 세번째 자리 ............


- 함수 : afx_msg void RadioCtrl(UINT ID) 

함수 명 및 파라미터 명은 자유

라디오 버튼 클릭시 이벤트 처리를 해주는 함수 (등록 필요)










4. cpp파일 (저 같은 경우에는 ServerCppDlg.cpp)로 가서 함수 및 메시지를 등록


- 생성자 뒷 부분에 ,m_radioProgramMode(0)

라디오 버튼의 선택상태를 초기화

-1 : 선택안함

0 : 라디오 버튼 첫번째 자리

1 : 라디오 버튼 두번째 자리

2 : 라디오 버튼 세번째 자리 ............


- DoDataExchange 함수에 

DDX_Radio(pDX, 첫번째 라디오 IDC, 헤더에 선언한 UINT변수)를 입력합니다.


DDX_Radio에 라디오 그룹의 첫 번째 IDC값을 m_radioProgramMode 변수와 연결하기 위함.



- BEGIN_MESSAGE_MAP에

ON_CONTROL_RANGE(BN_CLICKED, 첫번째 라디오 IDC, 마지막 라디오 IDC, RadioCtrl)를 입력


해당 범위의 라디오 버튼을 눌렀을 때, 등록된 함수를 호출하라는 의미







5. 헤더에 선언했던 RadioCtrl 함수를 정의 하면 됩니다.





ps. 가독성 편집은 시간 날 때 하겠습니다...



내용 참고 : 

https://helgeklein.com/blog/2009/10/radio-buttons-in-mfc-visual-studio-2008-c/


http://codesharing.tistory.com/entry/MFC-Radio-Button-%EA%B7%B8%EB%A3%B9%ED%99%94-%EC%8B%9C%ED%82%A4%EA%B8%B0


http://yoshiboarder.tistory.com/119