2017. 2. 28. 13:46 MFC/기초
MFC) 여러 컨트롤(버튼 등) 이벤트 동시 처리
개발자에게 추가 개발요청이 들어온 경우 부득이하게 같은 UI를 추가해야 하는 경우가 있다.
그럴 경우 하나의 UI에서 동작하는 이벤트 함수를 02 또는 다른 숫자를 붙여가며 불필요하게 추가해야 할 경우가 있다(다른 방법도 물론 있겠다).
그럴 경우 사용하기 좋은 기능 하나를 소개하고자 글을 쓴다.
-----------------------------------------------------------------------------------------------------
보통 UI 상의 버튼 클릭 이벤트 등을 처리하기 위해서는
ON_COMMAND(IDC_BTN, &CTestDlg::OnBtnClick)
의 경우로 해결해 주는 것이 보통이다.
하지만 IDC_BTN이 초기 설계보다 더 필요해 질 경우
ON_COMMAND(IDC_BTN01, &CTestDlg::OnBtnClick01)
ON_COMMAND(IDC_BTN02, &CTestDlg::OnBtnClick02)
이런 방식으로 해결해야 할 경우가 있다.
이런 경우는 추가적으로 커맨드를 등록할 필요 없이 다음과 같은 방법을 사용하면 된다.
ON_COMMAND_RANGE(IDC_BTN01, IDC_BTN02, &CTestDlg::OnBtnClick)
// .............................................(첫 버튼 , 마지막버튼, 공통으로 처리할 함수 )
-----------------------------------------------------------------------------------------------------
ex)
(h)
afx_msg void OnBtnClick(UINT uiID);
(cpp)
ON_COMMAND_RANGE(IDC_BTN01, IDC_BTN02, &CTestDlg::OnBtnClick)
void CTestDlg::OnBtnClick(UINT uiID)
{
swicth (uiID)
{
case IDC_BTN01:
.......; break;
case IDC_BTN02:
.......; break;
default:
break;
}
(주의사항)
ON_COMMAND_RANGE 에서 첫 컨트롤과 마지막 컨트롤은 Resource.h 상에 연속으로 선언되어 있어야 한다. 연속으로 선언되지 않아 다른 컨트롤이 OnBtnClick 함수를 탈 경우를 주의.
'MFC > 기초' 카테고리의 다른 글
MFC) MFC 라이브러리 함수 정리 (0) | 2017.11.08 |
---|---|
MFC) 다이얼로그(Dialog) Create VS DoModal (0) | 2017.03.31 |
MFC) ToolBar(툴바) 기본 사용법 및 팁 (0) | 2017.02.27 |
MFC) Work Thread / UI(Usesr Interface) Thread 사용법 총 정리 (0) | 2017.02.17 |
MFC) CString/문자열 함수(탐색 및 추출)/Find, ReverseFind, Left, Right, Mid (0) | 2017.02.09 |