본문 바로가기
MFC

ON_CONTROL_RANGE를 이용해서 같은 이벤트 처리를 한 함수로 해결 방법

by leo21c 2023. 7. 5.

아래 예는 ComboBox를 3개 만들고 각각의 ComboxBox Select Change 이벤트를 처리하는 함수를 만들었다.


ON_CBN_SELCHANGE(IDC_CB_1, OnCbnSelchangeCombo1)
ON_CBN_SELCHANGE(IDC_CB_2, OnCbnSelchangeCombo2)
ON_CBN_SELCHANGE(IDC_CB_3, OnCbnSelchangeCombo3)

위와 같이 3개의 이벤트 함수를 만들었는데 각각의 처리 내용이 비슷하다면 하나의 함수로 만들고 싶을 것이다.
이때 사용 할 수 있는 것이 ON_CONTROL_RANGE이다.


ON_CONTROL_RANGE(CBN_SELCHANGE, IDC_CB_1, IDC_CB_3, OnCbnSelchangeComboByID)

Control의 ID 범위를 지정하고 이벤트 타입을 넣어 사용하는 방식이다.
헤더 파일을 보면 이런 차이가 있다.


afx_msg void OnCbnSelchangeCombo1();
afx_msg void OnCbnSelchangeCombo2();
afx_msg void OnCbnSelchangeCombo3();
afx_msg void OnCbnSelchangeComboByID(UINT nID);

함수를 만들어 보면 아래와 같이 nID로 switch를 만들어 구분을 해서 처리를 하면 된다.

void MainForm::OnCbnSelchangeComboByID(UINT nID)
{
	switch (nID)
	{
	case IDC_CB_1:
		break;
	case IDC_CB_2:
		break;
	case IDC_CB_3:
		break;
	}
}

Control ID는 순서대로 입력이 되어 있다는 가정으로 사용을 한다.


Resource.h에 정의 된 IDC_CB_1 ~ IDC_CB_3은 아래와 같이 순서대로 되어 있어야 사용에 문제가 없다.

#define IDC_CB_1            10
#define IDC_CB_2            11
#define IDC_CB_3            12

'MFC' 카테고리의 다른 글

최근 열어본 파일 MRU Menu Items 처리 커스텀 방법  (1) 2024.01.15
UpdateData() 함수 Param 의미  (0) 2023.07.07
HEX CString to BYTE array  (0) 2023.05.08
MFC jsoncpp 설치  (0) 2022.11.28
CScrollView를 이용한 Image Viewer 예제  (0) 2022.07.27