아래 예는 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 |