--
Google 그룹스 'GameCodi Study Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 gamecodi-study-g...@googlegroups.com에 이메일을 보내세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.
3,4 장 내용에 대한 온라인 토론을 시작합니다~
class IDialog;
class IControl
{
public:
long m_id;
};
class Page
{
IDialog* m_pDlg;
void OnUIEvent(IDialog* pDlg, IControl* pCtrl, unsigned int nEvent);
void event_function1( void );
void event_function2( void );
void event_function3( long l );
void event_function4( long l );
/*...*/
};
void Page::OnUIEvent(IDialog* pDlg, IControl* pCtrl, unsigned int nEvent)
{
switch(pCtrl->m_id)
{
case 0:
event_function1();
break;
/*...*/
default:
break;
}
}
using std::function;
using std::bind;
using std::unordered_map;
class IDialog;
class IControl
{
public:
long m_id;
};
class Page
{
IDialog* m_pDlg;
unordered_map<unsigned int, function<void()>> event_handle_map;
unordered_map<unsigned int, function<void(long)>> event_handle_map2;
void InitEventHandler();
void OnUIEvent(IDialog* pDlg, IControl* pCtrl, unsigned int nEvent, long nInfo);
void event_function1( void ) {}
void event_function2( void ) {}
void event_function3( long l ) {}
void event_function4( long l ) {}
/*...*/
};
void Page::InitEventHandler()
{
event_handle_map[0] = bind(&Page::event_function1, this);
/*...*/
}
void Page::OnUIEvent(IDialog* pDlg, IControl* pCtrl, unsigned int nEvent, long nInfo)
{
do {
unordered_map<unsigned int, function<void()>>::iterator it = event_handle_map.find(pCtrl->m_id);
if(it != event_handle_map.end())
{
it->second();
break;
}
unordered_map<unsigned int, function<void(long)>>::iterator it2 = event_handle_map2.find(pCtrl->m_id);
if(it2 != event_handle_map2.end())
{
it2->second(nInfo);
break;
}
} while(0);
}