ON_COMMAND_RANGE 매크로

MFC 2019. 3. 31. 16:52 Posted by 쫀다

 

비슷한 작업을 하는 연속된 ID 값을 갖는 메세지 처리를 할경우 ON_COMMAND_RANGE 매크로를 사용하여 이벤트를 처리하면 코딩량을 줄일 수 있다.

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

ON_COMMAND (ID_RED, onRed)

ON_COMMAND (ID_BLUE, onBlue)

ON_COMMAND (ID_YELLOW, onYellow)

END_MESSAGE_MAP()

 

void CMainFrame::OnRed()

{

m_nColor = ID_RED;

}

void CMainFrame::OnBlue()

{

m_nColor = ID_BLUE;

}

void CMainFrame::OnYellow()

{

m_nColor = ID_YELLOW;

}

  

위와 같이 되어 있는 메세지 처리 함수를 다음과 같이 줄여서 사용할 수 있다.

 

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

ON_COMMAND_RANGE (ID_RED, ID_YELLOW, OnColor)

END_MESSAGE_MAP()

 

void CMainFrame::OnColor(UINT nID)

{

m_nColor = nID;

}

 

ON_COMMAND_RANGE 매크로를 사용할때 주의 해야할점은

사용되는 ID값은 반드시 연속적인 값이여야 하고 메세지 처리 함수는 UINT nID인자를 반드시 사용해야 한다는 점이다. 만약 UINT nID 인자 값을 주지 않을 시에는 디버깅 모드에서는 에러가 나지 않지만 릴리즈 모드에서는 프로그램이 죽어버린다.

 

ON_UPDATE_COMMAND_UI_RANGE

 

Message Map Macros (MFC)

https://docs.microsoft.com/en-us/previous-versions/s9k6yh5b%28v%3dvs.140%29

'MFC' 카테고리의 다른 글

MFC 자주 쓰이는 녀석들  (0) 2019.04.01
ModifyStyle  (0) 2019.04.01
툴박스에 텍스트 삽입  (0) 2019.03.30
OnCreate() ,OnInitialUpdate() 비교  (0) 2019.03.22
디버깅에 도움을 주는 assert 매크로에 대하여  (0) 2019.03.20