2017. 9. 5. 23:56
ON_CONTROL_RANGE 매크로를 이용하여 여러 개의 범위를 처리한다
1. 이벤트가 발생하면 메시지를 처리한다고 결정한다
EX) 버튼이 눌렸을 때 - BN_CLICKED
2. 메시지 핸들러를 등록한다
afx_msg void OnDriveButtonClicked(UINT uID);
3. 처리 범위를 결정한다.
enum enDriveButtonID
{
_EN_ID_DRIVE_BASE_ = 2001,
};
static const size_t nMaxButtonCount(4);
4. ON_CONTROL_RANGE( ) 를 이용하여 범위를 등록한다
ON_CONTROL_RANGE(BN_CLICKED, // 발생 이벤트
_EN_ID_DRIVE_BASE_, // 시작 ID
_EN_ID_DRIVE_BASE_ + nMaxButtonCount, // 끝 ID
OnDriveButtonClicked) // 메시지 처리 함수
5. 메시지 핸들러를 구현한다
void CDlg::OnDriveButtonClicked(UINT uID)
{
for(int nIndex(0); nIndex < nMaxButtonCount; ++nIndex)
{
if(uID == _EN_ID_DRIVE_BASE_ + nIndex)
{
m_strDrive = strFiles[nIndex];
if(m_bSearchMode)
m_editSearch.GetWindowTextW(m_strExtension);
break;
}
}
OnOK();
}