www.pudn.com > IPServer.rar > DrawList.cpp
#include "stdafx.h" #include "DrawList.h" #include "ConfigDlg.h" #includeusing namespace std; #define NO_SUCH_DEVICE 0 #define DIFFERENT_IP 1 #define SAME_NAME_IP 2 #define DELETE_DEVICE 3 void GetCurrentPath(char *path); void OutputLocalTime(char *tmval) { char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; time_t timep; struct tm *p; time(&timep); p=localtime(&timep); /*取得当地时间*/ sprintf(tmval,"%d %d %d %s %d:%d:%d",(1900+p->tm_year),( 1+p->tm_mon), p->tm_mday,\ wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec); } CDrawList::CDrawList() { } CDrawList::~CDrawList() { } void CDrawList::updateCommandToList(bool badd,const char* deviceip,const char* devicename,const char* deviceid, const char* netcardid, unsigned short port,CListCtrl* list, BOOL bLog) { int count=list->GetItemCount(); if(count>=1000) list->DeleteAllItems(); TRACE("updateCommandToList::num on lists=%d\n",count); char strport[32]; memset(strport,0,32); _itoa(port,strport,10); FILE *fp; char item[512]; char tmval[100]; string strItem; int pos; string strRemain; int bHaved=NO_SUCH_DEVICE; int result=1; if(badd) { for(int i = 0; i< count; i++) { if(strcmp(devicename,(LPCTSTR)(list->GetItemText(i, 1))) == 0) { TRACE("the %d device %s existed\n",i,devicename); if(strcmp(deviceip,(LPCTSTR)list->GetItemText(i, 0)) == 0) { bHaved=SAME_NAME_IP; break; } //设备已经存在则刷新 list->DeleteItem(i); if (bHaved==NO_SUCH_DEVICE) { TRACE("%d refresh",i); list->InsertItem(i,deviceip); list->SetItemText(i,1,devicename); list->SetItemText(i,2,deviceid); list->SetItemText(i,3,netcardid); list->SetItemText(i,4,strport); bHaved=DIFFERENT_IP; } result=0; } else { result=1; } } if(result==1&&bHaved==NO_SUCH_DEVICE) { TRACE("ADD new a item:deviceip=%s,devicename=%s,deviceid=%s\n",deviceip,devicename,deviceid); //OutputLocalTime(tmval); //sprintf(item,"%s\t%s\t%s\t%s\t%s\t%s\n",tmval,deviceip,devicename, deviceid,\ // netcardid,strport); //fputs(item, fp); list->InsertItem(0,deviceip); list->SetItemText(0,1,devicename); list->SetItemText(0,2,deviceid); list->SetItemText(0,3,netcardid); list->SetItemText(0,4,strport); } } else { TRACE("delete a item from list\n"); for(int i = 0; i< count; i++) { if(strcmp(deviceid,(LPCTSTR)list->GetItemText(i, 2)) == 0) { list->DeleteItem(i); bHaved=DELETE_DEVICE; break; } } } //更新列表 list->UpdateWindow(); count=list->GetItemCount(); if ( bHaved != SAME_NAME_IP ) { char path[100]; GetCurrentPath(path); strcat(path,"\\devicelog.txt"); TRACE("PATH=%s\n",path); if ( (fp=fopen(path, "w+")) == NULL) { TRACE("OPEN devicelog.txt error\n"); return; } TRACE("change devicelog\n"); for(int j = 0; j< count; j++) { OutputLocalTime(tmval); sprintf(item,"%s\t%s\t%s\t%s\t%s\t%s\n",tmval, list->GetItemText(j,0).GetBuffer(0),\ list->GetItemText(j,1).GetBuffer(0), list->GetItemText(j, 2).GetBuffer(0),\ list->GetItemText(j,3).GetBuffer(0), list->GetItemText(j,4).GetBuffer(0)); fputs(item, fp); } fclose(fp); } }