프로그래밍/MFC

버튼 가변 메시지 핸들러 처리 방법

이재만박사 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();

}