체인구조에서 동일 메시지 상에서 별도에 메시지 이벤트를 발생하려고 한다면은 다음과 처리하면 된다.
[code]
CHAIN_MSG_MAP_ALT(CBaseMsgWindow, 1)
// base class
class CBaseMsgWindow : public CWindowImpl<CBaseMsgWindow>
{
// 메세지 맵을 세 개의 부분에 분할
BEGIN_MSG_MAP(CBaseMsgWindow)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown2)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown3)
END_MSG_MAP()
LRESULT OnButtonDown(UINT, WPARAM, LPARAM, BOOL&)
{
MessageBox(_T("Hello!"));
return 0;
}
LRESULT OnButtonDown2(UINT, WPARAM, LPARAM, BOOL&)
{
MessageBox(_T("Hello, ATL!"));
return 0;
}
LRESULT OnButtonDown3(UINT, WPARAM, LPARAM, BOOL&)
{
MessageBox(_T("Hello, ATL/WTL!"));
return 0;
}
};
[/code]
[code]
// 상속 클래스 1
class CHelloWindow : public CBaseMsgWindow
{
BEGIN_MSG_MAP(CHelloWindow)
...
CHAIN_MSG_MAP(CBaseMsgWindow) // 통상의 체인
END_MSG_MAP()
};
[/code]
[code]
// 상속 클래스 2
class CHelloWindow2 : public CBaseMsgWindow
{
BEGIN_MSG_MAP(CHelloWindow2)
...
CHAIN_MSG_MAP_ALT(CBaseMsgWindow, 1) // 대체 메세지 맵에 체인
END_MSG_MAP()
};
[/code]
[code]
CHAIN_MSG_MAP_ALT(CBaseMsgWindow, 1)
// base class
class CBaseMsgWindow : public CWindowImpl<CBaseMsgWindow>
{
// 메세지 맵을 세 개의 부분에 분할
BEGIN_MSG_MAP(CBaseMsgWindow)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown)
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown2)
ALT_MSG_MAP(2)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown3)
END_MSG_MAP()
LRESULT OnButtonDown(UINT, WPARAM, LPARAM, BOOL&)
{
MessageBox(_T("Hello!"));
return 0;
}
LRESULT OnButtonDown2(UINT, WPARAM, LPARAM, BOOL&)
{
MessageBox(_T("Hello, ATL!"));
return 0;
}
LRESULT OnButtonDown3(UINT, WPARAM, LPARAM, BOOL&)
{
MessageBox(_T("Hello, ATL/WTL!"));
return 0;
}
};
[/code]
[code]
// 상속 클래스 1
class CHelloWindow : public CBaseMsgWindow
{
BEGIN_MSG_MAP(CHelloWindow)
...
CHAIN_MSG_MAP(CBaseMsgWindow) // 통상의 체인
END_MSG_MAP()
};
[/code]
[code]
// 상속 클래스 2
class CHelloWindow2 : public CBaseMsgWindow
{
BEGIN_MSG_MAP(CHelloWindow2)
...
CHAIN_MSG_MAP_ALT(CBaseMsgWindow, 1) // 대체 메세지 맵에 체인
END_MSG_MAP()
};
[/code]
'Windows > WTL' 카테고리의 다른 글
WM_CONTEXTMENU (0) | 2013.10.02 |
---|---|
MFC 원형 정보 (0) | 2013.10.02 |
체인 구조 (0) | 2013.10.02 |
통지 핸들러 매크로 (0) | 2013.10.02 |
커맨드 핸들러 매크로 (0) | 2013.10.02 |