GenList.rar
struct LINKER;//通用链表
struct FN_TAB
{
LINKER *(*pFnCreate)();
bool (*pFnCmp)(LINKER *, char *);
void (*pFnInput)(LINKER *);
void (*pFnOutput)(LINKER *);
void (*pFnDelete)(LINKER *);
};
struct LINKER
{
FN_TAB *m_pFnTab;
LINKER *m_pLast;
LINKER *m_pNext;
};
int CreateList(LINKER **ppHead, LINKER *(*pCreate)());
int AddNode(LINKER *pHead);
int InsertNode(LINKER **ppHead, LINKER *pPos, int nType = 1);
LINKER *FindNode(LINKER *pHead, char *pStr);
int ModefyNode(LINKER *pPos);
int DeleteNode(LINKER **ppHead, LINKER *pPos);
int ClearList(LINKER **ppHead);
int ShowList(LINKER *pHead);
windowsAPI贪吃蛇
LRESULT KeyDirct(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
nTime -= 10;
if (nTime < 50)
{
nTime = 50;
}
int nKeyDown = (int)wParam;
switch (nKeyDown)
{
case VK_UP:
{
if (STAY == Key)
{
Key = UP;
}
else if (UP == Key || DOWN == Key)
{
break;
}
SetTimer(hwnd, 1001, nTime, TimerProc);
Key = UP;
}
break;
case VK_DOWN:
{
if (STAY == Key)
{
Key = DOWN;
}
else if (UP == Key || DOWN == Key)
{
break;
}
SetTimer(hwnd, 1001, nTime, TimerProc);
Key = DOWN;
}
break;
case VK_LEFT:
{
if (STAY == Key)
{
Key = LEFT;
}
else if (LEFT == Key || RIGHT == Key)
{
break;
}
SetTimer(hwnd, 1001, nTime, TimerProc);
Key = LEFT;
}
break;
case VK_RIGHT:
{
if (STAY == Key)
{
Key = RIGHT;
}
else if (LEFT == Key || RIGHT == Key)
{
break;
}
SetTimer(hwnd, 1001, nTime, TimerProc);
Key = RIGHT;
}
break;
default:
break;
}
return 0;
}
多界面,多文件,人员管理信息查询Cmd命令行
void CmdProc(const CMD_MAP *pCmd_Map, const char *pAppName)
{
if (NULL != pCmd_Map)
{
char szBuf[255] = "";
const CMD_MAP *pTemp = NULL;
while (true)
{
cout<<pAppName<<">:";
cin>>szBuf;
pTemp = pCmd_Map;
if (StrCmp(szBuf, "Exit"))
{
break;
}
for (int i = 0; pTemp[i].pName != NULL; i++)
{
if (StrCmp(szBuf, "Help"))
{
//((PFN_VP)pTemp[i].pFn)(pCmd_Map);
Help(pCmd_Map);
break;
}
if (StrCmp(szBuf, pTemp[i].pName))
{
pTemp[i].pFn();
break;
}
}
if (NULL == pTemp[i].pName)
{
cout<<"Input error!!"<<endl;
}
else
{
if (NULL == pTemp[i].pFn)
{
break;
}
}
}
}
}