같은 컨트롤의 개수가 많을 때 같은 이벤트 처리기를 여러개 만들 경우, 보기도 안좋고 번거로운 작업이 필요합니다.

이벤트 처리기를 한 데 묶어 쓰는 방법입니다.




우선 테스트를 위해 버튼을 네개 만들어 두었습니다. 각각의 ID는 IDC_BUTTON1~IDC_BUTTON4까지입니다.




대화상자 cpp파일 내에 처리 내용이 담긴 함수를 만들어 줍니다. 인자는 UINT 형 변수이고 반환형은 없어야 합니다.

인자로 ID가 넘어와 이걸 통해 컨트롤 간의 구분이 가능합니다. 함수의 원형은 헤더 파일에 선언합니다.




메시지 맵에 빨간 박스와 같이 적습니다. ON_COMMAND_RANGE 매크로인데, 첫번째 인수는 시작 ID, 두번째 인수는 끝 ID, 세번째 인수는 반환형이 void이고 인자가 UINT인 함수의 주소를 넘겨줍니다.

그러면 IDC_BUTTON1~IDC_BUTTON4까지의 컨트롤에 이벤트가 발생할 경우 해당 함수가 호출됩니다.




잘 작동하는 것을 볼 수 있습니다.

+ Recent posts