같은 컨트롤의 개수가 많을 때 같은 이벤트 처리기를 여러개 만들 경우, 보기도 안좋고 번거로운 작업이 필요합니다.
이벤트 처리기를 한 데 묶어 쓰는 방법입니다.
우선 테스트를 위해 버튼을 네개 만들어 두었습니다. 각각의 ID는 IDC_BUTTON1~IDC_BUTTON4까지입니다.
대화상자 cpp파일 내에 처리 내용이 담긴 함수를 만들어 줍니다. 인자는 UINT 형 변수이고 반환형은 없어야 합니다.
인자로 ID가 넘어와 이걸 통해 컨트롤 간의 구분이 가능합니다. 함수의 원형은 헤더 파일에 선언합니다.
메시지 맵에 빨간 박스와 같이 적습니다. ON_COMMAND_RANGE 매크로인데, 첫번째 인수는 시작 ID, 두번째 인수는 끝 ID, 세번째 인수는 반환형이 void이고 인자가 UINT인 함수의 주소를 넘겨줍니다.
그러면 IDC_BUTTON1~IDC_BUTTON4까지의 컨트롤에 이벤트가 발생할 경우 해당 함수가 호출됩니다.
잘 작동하는 것을 볼 수 있습니다.
'Programming > MFC' 카테고리의 다른 글
[일지][MFC] Rich Edit 2.0 / Progress Bar / HTTP / ZIP (0) | 2016.12.23 |
---|---|
[MFC] 항상 위(Topmost) 설정, 프로그램 투명도 변경(Layered Window) (0) | 2014.12.05 |
[MFC] List Control 이용하기 (3) | 2014.02.05 |
[MFC] editbox 글자 크기 변경 (3) | 2014.02.03 |
[140107화] MFC 시작 (3) | 2014.01.07 |