64,649
社区成员
发帖
与我相关
我的任务
分享
#include <vector>
typedef std::vector<std::wstring> Command;
class CCmdHandlers
{
public:
CCmdHandlers();
~CCmdHandlers();
//命令接收处理函数
BOOL DispatchCommand(const Command& cmd);
private:
Command cmd;
};
BOOL CCmdHandlers::DispatchCommand(const Command & cmd)
{
static struct {
LPCTSTR cmd;
void(CCmdHandlers::* handler)(const Command&);
} cmdMap[] = {
{ TEXT("s"),&CCmdHandlers::OnStartDebug },
{ TEXT("g"),&CCmdHandlers::OnGo },
{ TEXT("d"),&CCmdHandlers::OnDump },
{ NULL, NULL },
};
if (cmd.size() == 0) {
return TRUE;
}
else if (cmd[0] == TEXT("q")) {
return FALSE;
}
for (int index = 0; cmdMap[index].cmd != NULL; ++index) {
if (cmd[0] == cmdMap[index].cmd) {
cmdMap[index].handler(cmd);
return TRUE;
}
}
wcout << TEXT("Invalid command.") << endl;
return TRUE;
}
void CCmdHandlers::OnStartDebug(const Command & cmd)
{
MessageBoxA(NULL, "OnStartDebug", "OnStartDebug", NULL);
}
void CCmdHandlers::OnGo(const Command & cmd)
{
MessageBox(NULL, L"OnGo", L"OnGo", NULL);
}
void CCmdHandlers::OnDump(const Command & cmd)
{
MessageBox(NULL, L"OnDump", L"OnDump", NULL);
}