/** * 函数名称: RestoreInfo * 函数功能: 从备份文件中还原信息,新建链表,并保存. * 输入参数: head 主链表头结点指针;path 文件路径 * 输出参数: 无 * 返 回 值: 无 * * 调用说明: */ void RestoreInfo(Province **head,char *path) { char space; int flag=0; FILE *pf = fopen(path, "r"); if(!pf) { char *plabel_name[] = {"文件打开失败!", "确定" }; ShowModule(plabel_name, 2); Province *phead = (Province *)malloc(sizeof(Province)); *head=phead; return; } Province *phead = (Province *)malloc(sizeof(Province)); Province *tail = phead; tail->next=NULL; int num; char temp[50]; while(fscanf(pf,"%d",&num)!=EOF) { if(num==1) { tail=phead; while(tail->next!=NULL) tail=tail->next; tail->next = (Province *)malloc(sizeof(Province)); tail = tail->next; fscanf(pf, "%s%s%s", tail->ProvProv,tail->ProvLeader, tail->ProvTel); tail->ProvCase = (Case *)malloc(sizeof(Case)); tail->ProvCase->next = NULL; tail->next=NULL; } else if(num==2) { flag=0; tail=phead; fscanf(pf,"%s",temp); while (tail->next != NULL) { tail = tail->next; if (!strcmp(temp, tail->ProvProv)) { flag=1; Case *tail1 = tail->ProvCase; while (tail1->next != NULL) tail1 = tail1->next; tail1->next = (Case *)malloc(sizeof(Case)); tail1 = tail1->next; strcpy(tail1->CaseProv, temp); fscanf(pf, "%s%s%s%c%c%c%c%f%d", tail1->CaseId, tail1->CaseDate, tail1->CaseName, &space, &tail1->CaseLevel, &space, &tail1->CaseCharge, &tail1->CaseMoney, &tail1->CaseJudge); tail1->CaseRepo = (Report *)malloc(sizeof(Report)); tail1->CaseRepo->next = NULL; tail1->next=NULL; break; } } if(!flag) { char *plabel_name[] = {"备份文件有误!", "确定" }; ShowModule(plabel_name, 2); Province *phead = (Province *)malloc(sizeof(Province)); *head=phead; return; } } else if(num==3) { flag=0; tail=phead; Case *tail1=NULL; fscanf(pf,"%s",temp); while (tail->next != NULL) { tail = tail->next; tail1 = tail->ProvCase; while (tail1->next != NULL) { tail1 = tail1->next; if (!strcmp(tail1->CaseId, temp)) { flag=1; Report *tail2 = tail1->CaseRepo; while (tail2->next != NULL) tail2 = tail2->next; tail2->next = (Report *)malloc(sizeof(Report)); tail2 = tail2->next; strcpy(tail2->RepoCaseId, temp); fscanf(pf, "%s%s%s%s%c%c", tail2->RepoId,tail2->RepoDate, tail2->RepoFirm, tail2->RepoIndex, &space, &tail2->RepoField); tail2->next = NULL; tail = phead; break; } } if(flag) break; } if(!flag) { char *plabel_name[] = {"备份文件有误!", "确定" }; ShowModule(plabel_name, 2); Province *phead = (Province *)malloc(sizeof(Province)); *head=phead; return; } } } fclose(pf); *head=phead; SaveInfo(*head); char *plabel_name[] = {"恢复成功!", "确定" }; ShowModule(plabel_name, 2); }
void CCmdCenter::onGetUserInput(std::string strInput ) { std::vector<std::string> vecSplit ; std::string strCur ; for ( char n : strInput ) { if ( n != ' ' && n != '\t' ) { strCur.push_back(n); } else { if ( strCur.empty() == false ) { vecSplit.push_back(strCur) ; } strCur.clear() ; } } if ( strCur.empty() == false ) { vecSplit.push_back(strCur) ; } strCur.clear() ; if ( vecSplit.empty() ) { printf("parse input error , str = %s\n",strInput.c_str() ) ; return ; } // if is help commond if ( "help" == vecSplit[0] ) { vecSplit.erase(vecSplit.begin()) ; if ( vecSplit.empty() ) { showModules(); return; } if ( vecSplit.size() == 1 ) { ShowModule(vecSplit[0]) ; return; } showCmd(vecSplit[0],vecSplit[1]) ; return ; } auto pcmd = getCmdByName(vecSplit[0]); if ( pcmd == nullptr ) { printf("can not find cmd name = %s\n",vecSplit[0].c_str()) ; return ; } vecSplit.erase(vecSplit.begin()) ; stBufferItem * p = new stBufferItem(pcmd,vecSplit); m_tBufferLock.Lock() ; m_vWillSendBuffer.push_back(p) ; m_tBufferLock.Unlock() ; }
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: switch (LOWORD(wParam)) { case ID_PM_REALTIME: SetProcessPriority(REALTIME_PRIORITY_CLASS); break; case ID_PM_HIGH: SetProcessPriority(HIGH_PRIORITY_CLASS); break; case ID_PM_ABOVE_NORMAL: SetProcessPriority(ABOVE_NORMAL_PRIORITY_CLASS); break; case ID_PM_NORMAL: SetProcessPriority(NORMAL_PRIORITY_CLASS); break; case ID_PM_BELOW_NORMAL: SetProcessPriority(BELOW_NORMAL_PRIORITY_CLASS); break; case ID_PM_IDLE: SetProcessPriority(IDLE_PRIORITY_CLASS); break; } switch (HIWORD(wParam)) { case 1: { if (lParam == (LPARAM)ListBoxProcess) ShowModule(); } break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; } break; case WM_CONTEXTMENU: if (SendMessage(ListBoxProcess, LB_GETCURSEL, 0, 0) != LB_ERR) { POINT cursorPosition; GetCursorPos(&cursorPosition); TrackPopupMenu(PopupMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, cursorPosition.x, cursorPosition.y, 0, hWnd, NULL); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; } return 0; }