⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 src.cpp

📁 software to manage contacts
💻 CPP
字号:
#include <afxwin.h>
#include <afxext.h>
#include <afxcmn.h>
#include <afxdlgs.h>
#include "Class.h"
#include "resource.h"
int rec,display,del;
int count,i,nxt,vw,Fcolor,scolor;
Contact sresult;
CMainWin::CMainWin()
{
	CClientDC dc(this);
	CString WinClass;
	HBRUSH Brush;
	Brush=::CreateSolidBrush (RGB(255,234,123));
	WinClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
		0,Brush,AfxGetApp()->LoadIcon(IDI_ICON2));
	Create(WinClass,"Digital Diary",WS_OVERLAPPEDWINDOW,
		rectDefault,0,MAKEINTRESOURCE(IDR_MENU1));
	max=GetSystemMetrics(SM_CYSCREEN);
	maxx=GetSystemMetrics(SM_CXSCREEN);
	mdc.CreateCompatibleDC(&dc);
	bmp.CreateCompatibleBitmap(&dc,maxx,max);
	mdc.SelectObject(&bmp);
	bkbrush.CreateSolidBrush(RGB(255,234,123));
	mdc.SelectObject(bkbrush);
	mdc.PatBlt(0,0,maxx,max,PATCOPY);
	bgclr=RGB(255,234,123);
	sclr=RGB(155,0,255);
	display=0;
	del=0;
	Fcolor=0;
	scolor=0;
}

BOOL CApp::InitInstance()
{
	CMainWin *p;
	p=new CMainWin;
	p->ShowWindow(3);
	m_pMainWnd=p;

	return 1;
}

int CMainWin::OnCreate(LPCREATESTRUCT I)
{
	HTREEITEM DigiD,Cntc;
	CFrameWnd::OnCreate(I);
	max=GetSystemMetrics(SM_CYSCREEN);
	maxx=GetSystemMetrics(SM_CXSCREEN);
	st.Create(this);
	flag[0]=0;
	flag[1]=ID_INDICATOR_CAPS;
	flag[2]=ID_INDICATOR_NUM;
	flag[3]=ID_INDICATOR_SCRL;
	st.SetIndicators(flag,4);
	st.SetPaneText(0,"Digital Diary");
	CBrush bb;
	bb.CreateSolidBrush(RGB(213,76,210));
	mdc.SelectObject(&bb);
	nav.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES | 
		TVS_LINESATROOT | TVS_HASBUTTONS | TVS_SHOWSELALWAYS,
		CRect(0,0,200,max-97),this,1);
	DigiD=nav.InsertItem("Digital Diary",TVI_ROOT);
	Cntc=nav.InsertItem("Contacts",DigiD);
	nav.InsertItem("View Contact",Cntc);
	nav.InsertItem("Add Contact",Cntc);
	nav.InsertItem("Modify Contact",Cntc);
	nav.InsertItem("Search Contact",Cntc);
	nav.InsertItem("Delete Contact",Cntc);

	count=1;
	vw=0;
	Contact all;
	while(fp.Read(&all,sizeof(all))!=0)
	{
		count++;
	}
	return 0;
}

void CMainWin::OnPaint()
{
	CPaintDC dc(this);
	dc.BitBlt(0,0,maxx,max,&mdc,0,0,SRCCOPY);
}

int CMainWin::OnNotify(WPARAM w,LPARAM l,LRESULT *r)
{
	mdc.SetBkMode(TRANSPARENT);
	CStatic SName,SEmail,SWebadd,SPh,SPhHome,SPhMob,SAddress;
	CEdit Name,Email,Webadd,PhHome,PhMob,Address;
	CButton b[2];
	CComboBox Category;
	HTREEITEM h;
	CWnd::OnNotify(w,l,r);
	NM_TREEVIEW *p=(NM_TREEVIEW *)l;
	if(p->hdr.code==TVN_SELCHANGED)
	{
		
		h=nav.GetSelectedItem();
		str=nav.GetItemText(h);
		if(str=="Contacts")
		{
			fp.SeekToBegin();
			i=0;
			ViewCnt();
		}
		if(str=="Add Contact")
		{
			mAddCnt();
			AddCnt Add(AddDialog);
			Add.DoModal();
		}
		else if(str=="View Contact")
		{
			mViewCnt();
		//	fp.SeekToBegin();
		//	i=0;
		//	CMainWin::ViewCnt();
		}
		else if(str=="Delete Contact")
		{
			mDel();
//			del=1;
//			SearchContact SCnt(SearchDialog);
//			SCnt.DoModal();
		}
		else if(str=="Search Contact")
		{
			mSearch();
//			SearchContact SCnt(SearchDialog);
//			SCnt.DoModal();
		}
		else if(str=="Modify Contact")
		{
			mMod();
//			Contact con;
//			fp.SeekToBegin();
//			fp.Read(&con,sizeof(con));
//			ModCnt Edit(Modify);
//			Edit.DoModal();
		}
	}
	return 1;
}


void SearchContact::Search()
{
	CDialog::OnOK();
	Contact con;
	fp.SeekToBegin();
	int f=0;
	int rr=1;
	SearchContact::SetWindowText("Delete Contacts");
	for(int d=1;d<count;d++)
	{
		fp.Read(&con,sizeof(con));
		rr++;
		if(l==con.name)
		{
			MessageBox("Contact Found!!!");
			sresult=con;
			f=1;
			if(del!=1)
				display=1;
			break;
		}
	}
	if(f!=1)
		MessageBox("Contact Not Found!!!");
	if(del==1 && f==1)
	{
		int n,k=1,w=0;
		n=MessageBox("Are you sure you want to delete this record???");
		if(n==IDOK)
		{
			fp.SeekToBegin();
			CFile ft("ConTemp.txt",CFile::modeCreate | CFile::modeWrite);
			while(fp.Read(&con,sizeof(con)))
			{
				if(rr==k+1)
				{
					MessageBox(con.name);
				}
				else
				{
					ft.Write(&con,sizeof(con));
//					w=1;
				}
				k++;
			}
			ft.Close();
			fp.Close();
			CFile::Remove("Contacts.txt"); 
			CFile::Rename("ConTemp.txt","Contacts.txt");
			fp.Open("Contacts.txt",CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate);
			del=0;
		}
		else
		{
			MessageBox("Record Not Deleted!!!");
		}
	}
}

void CMainWin::ViewCnt()
{
	struct Contact all;
	CBrush b,br;
	br.CreateSolidBrush(bgclr);
	mdc.SelectObject(&br);
	CRect r;
	r.top=0;
	r.left=200;
	r.bottom=max;
	r.right=maxx;
	mdc.FillRect(&r,&br);
	br.DeleteObject();
	int y;
	char vname[30];
	char vadd[45];
	char vwadd[30];
	char vemail[30];
	char vphhome[15];
	char vphmob[10];	
	mdc.SetBkMode(TRANSPARENT);
	mdc.TextOut(maxx/2,5,"Contact List",12);
	b.CreateSolidBrush(sclr);
	mdc.SelectObject(&b);
	mdc.Rectangle(200,30,maxx,60);
	mdc.TextOut(225,40,"Name",4);
	mdc.TextOut(350,40,"Address",7);
	mdc.TextOut(600,40,"EMail Id",8);
	mdc.TextOut(900,40,"Web Address",11);
	mdc.TextOut(1100,40,"Phone Numbers",13);
	if(fp.GetLength()==0)
	{
		mdc.TextOut(350,100,"No Contacts Found",17);
	}
	y=80;
	ytrack[0]=y;
	nxt=0;
	while(fp.Read(&all,sizeof(all))!=0)
	{

		sprintf(vname,"%s",all.name);
		mdc.TextOut(225,y,vname,strlen(vname));
		
		sprintf(vadd,"%s",all.add);
		mdc.TextOut(350,y,vadd,strlen(vadd));

		sprintf(vemail,"%s",all.email);
		mdc.TextOut(600,y,vemail,strlen(vemail));

		sprintf(vwadd,"%s",all.wadd);
		mdc.TextOut(900,y,vwadd,strlen(vwadd));

		sprintf(vphhome,"H: %s",all.phhome);
		mdc.TextOut(1100,y,vphhome,strlen(vphhome));
		y+=20;
		sprintf(vphmob,"M: %s",all.phmob);
		mdc.TextOut(1100,y,vphmob,strlen(vphmob));
		y+=20;
		y+=5;
		i++;
		mdc.MoveTo(200,y);
		mdc.LineTo(maxx,y);
		ytrack[i]=y;
		y+=20;
		char st[15];
		sprintf(st,"y:%d count %d i: %d",y,count,i);
		
		if((count-1>i) && y>660)
		{
			mdc.Rectangle(maxx-115,660,maxx-50,685);
			mdc.TextOut(maxx-100,665,"Next",4);
			nxt=1;
			break;
		}
	}
	InvalidateRect(NULL,FALSE);
}

int AddCnt::OnInitDialog()
{
	CDialog::OnInitDialog();

	SetDlgItemText(e1,"");
	SetDlgItemText(e2,"");
	SetDlgItemText(e3,"");
	SetDlgItemText(e4,"");
	SetDlgItemText(e5,"");
	SetDlgItemText(e6,"");

	return TRUE;
}

int SearchContact::OnInitDialog()
{
	CDialog::OnInitDialog();
	if(del==1)
	{
		SearchContact::SetWindowText("Delete Contact");
	//	del=1;
	}
	SetDlgItemText(s1,"");
	return TRUE;
}


int ModCnt::OnInitDialog()
{
	CDialog::OnInitDialog();

	struct Contact con;
	fp.SeekToBegin();
	fp.Read(&con,sizeof(con));
	SetDlgItemText(e1,con.name);
	SetDlgItemText(e2,con.add);
	SetDlgItemText(e3,con.wadd);
	SetDlgItemText(e4,con.email);
	SetDlgItemText(e5,con.phhome);
	SetDlgItemText(e6,con.phmob);
	SetDlgItemInt(num,1);
	rec=1;
	return TRUE;
}

void AddCnt::DoDataExchange(CDataExchange *p)
{
	DDX_Text(p,e1,l[0]);
	DDX_Text(p,e2,l[1]);
	DDX_Text(p,e3,l[2]);
	DDX_Text(p,e4,l[3]);
	DDX_Text(p,e5,l[4]);
	DDX_Text(p,e6,l[5]);
}	

void ModCnt::DoDataExchange(CDataExchange *p1)
{
	DDX_Text(p1,e1,l1[0]);
	DDX_Text(p1,e2,l1[1]);
	DDX_Text(p1,e3,l1[2]);
	DDX_Text(p1,e4,l1[3]);
	DDX_Text(p1,e5,l1[4]);
	DDX_Text(p1,e6,l1[5]);
}	

void SearchContact::DoDataExchange(CDataExchange *p)
{
	DDX_Text(p,s1,l);
}	

void SearchContact::OnCancel()
{
	SearchContact::EndDialog(0);
}

void ModCnt::OnPrev()
{
	if(rec!=1)
		rec--;
	Contact con;
	fp.SeekToBegin();
	for(int j=1;j<count;j++)
	{
		fp.Read(&con,sizeof(con));
		if(j==rec)
		{
			SetDlgItemText(e1,con.name);
			SetDlgItemText(e2,con.add);
			SetDlgItemText(e3,con.wadd);
			SetDlgItemText(e4,con.email);
			SetDlgItemText(e5,con.phhome);
			SetDlgItemText(e6,con.phmob);
			SetDlgItemInt(num,rec);
		}
	}
}

void ModCnt::OnNext()
{
	if(rec!=count)
		rec++;
	Contact con;
	fp.SeekToBegin();
	for(int j=1;j<count;j++)
	{
		fp.Read(&con,sizeof(con));
		if(j==rec && j<count)
		{
			SetDlgItemText(e1,con.name);
			SetDlgItemText(e2,con.add);
			SetDlgItemText(e3,con.wadd);
			SetDlgItemText(e4,con.email);
			SetDlgItemText(e5,con.phhome);
			SetDlgItemText(e6,con.phmob);
			SetDlgItemInt(num,rec);
		}
	}
}

void ModCnt::OnFirst()
{
	Contact con;
	fp.SeekToBegin();
	rec=1;
	fp.Read(&con,sizeof(con));
	SetDlgItemText(e1,con.name);
	SetDlgItemText(e2,con.add);
	SetDlgItemText(e3,con.wadd);
	SetDlgItemText(e4,con.email);
	SetDlgItemText(e5,con.phhome);
	SetDlgItemText(e6,con.phmob);
	SetDlgItemInt(num,rec);
}

void ModCnt::OnLast()
{
	int pq;
	pq=1;
	Contact con;
	fp.SeekToBegin();
	for(int j=1;j<count;j++)
	{
		fp.Read(&con,sizeof(con));
		if(j==count-1)
		{
			SetDlgItemText(e1,con.name);
			SetDlgItemText(e2,con.add);
			SetDlgItemText(e3,con.wadd);
			SetDlgItemText(e4,con.email);
			SetDlgItemText(e5,con.phhome);
			SetDlgItemText(e6,con.phmob);
			SetDlgItemInt(num,pq);
			rec=pq;
			break;
		}
		pq++;
	}
}

BEGIN_MESSAGE_MAP(SearchContact,CDialog)
	ON_COMMAND(IDOK,Search)
	ON_COMMAND(IDCANCEL,OnCancel)
END_MESSAGE_MAP()


BEGIN_MESSAGE_MAP(AddCnt,CDialog)
	ON_COMMAND(B1,AddContact)
	ON_COMMAND(B2,OnCancel)
END_MESSAGE_MAP()


BEGIN_MESSAGE_MAP(ModCnt,CDialog)
	ON_COMMAND(B1,ModifyContact)
	ON_COMMAND(next,OnNext)
	ON_COMMAND(prev,OnPrev)
	ON_COMMAND(first,OnFirst)
	ON_COMMAND(last,OnLast)
	ON_COMMAND(B2,OnCancel)

END_MESSAGE_MAP()

void ModCnt::ModifyContact()
{
	long int pos;
	struct Contact con;
	CDialog::OnOK();
	fp.SeekToBegin();
	if(rec==1)
	{
		fp.SeekToBegin();
	}
	else
	{
		for(int j=1;j<count;j++)
		{
			fp.Read(&con,sizeof(con));
			if(j==rec-1 && j<count)
			{
				pos=fp.GetPosition();
				fp.Seek(pos,CFile::begin);
				break;
			}
		}
	}
	
	strcpy(list1.name,l1[0]);
	strcpy(list1.add,l1[1]);
	strcpy(list1.wadd,l1[2]);
	strcpy(list1.email,l1[3]);
	strcpy(list1.phhome,l1[4]);
	strcpy(list1.phmob,l1[5]);

	fp.Write(&list1,sizeof(list1));
}


void AddCnt::AddContact()
{
	CDialog::OnOK();
	count++;
	strcpy(list.name,l[0]);
	strcpy(list.add,l[1]);
	strcpy(list.wadd,l[2]);
	strcpy(list.email,l[3]);
	strcpy(list.phhome,l[4]);
	strcpy(list.phmob,l[5]);

	fp.SeekToEnd();
	fp.Write(&list,sizeof(list));
//	fp.SeekToBegin();
//	i=0;
}

void AddCnt::OnCancel()
{
	int msg;
	msg=MessageBox("Are you Sure you dont want to add this contact?","Verification",MB_YESNO);
	if(msg==IDNO)
	{
		AddCnt::EnableWindow();
	}
	else if(msg==IDYES)
	{
		AddCnt::EndDialog(0);
	}
	 
}

void ModCnt::OnCancel()
{
	int msg;
	msg=MessageBox("Are you Sure you dont want to modify this contact?","Verification",MB_YESNO);
	if(msg==IDNO)
	{
		ModCnt::EnableWindow();
	}
	else if(msg==IDYES)
	{
		ModCnt::EndDialog(0);
	}
	 
}


void CMainWin::OnLButtonDown(UINT f,CPoint pt)
{
//	CFrameWnd::OnLButtonDown(f,pt);
	CBrush br;
	br.CreateSolidBrush(RGB(225,0,0));
	mdc.SelectObject(&br);
	int i=0;
//	MessageBox("");
//	while(i<9)
//	{
//		if(pt.y>ytrack[i] && pt.y<ytrack[i+1])
//		{
//			fp.SeekToBegin();
//			ViewCnt();
//			char str[15];
//			mdc.DrawFocusRect(CRect(200,ytrack[i],maxx,ytrack[i+1]));
//			mdc.Rectangle(200,ytrack[i],maxx,ytrack[i+1]);
//			sprintf(str,"Between %d & %d",i,i+1);
//		//	MessageBox(str);
//			break;
//		}
//		i++;
//	}
	if(pt.x> (maxx-115)  && pt.x< (maxx-50)  && pt.y>660  && pt.y<685 && nxt==1)
	{
		i=vw;
		ViewCnt();
	}
	InvalidateRect(NULL,FALSE);
}

void CMainWin::OnColor()
{
	CColorDialog cd;
	if(cd.DoModal()==IDOK)
	{
		
		if(Fcolor==1)
		{
			COLORREF penclr;
			penclr=cd.GetColor();
			mdc.SetTextColor(penclr);
			Fcolor=0;
		}
		else if(scolor==1)
		{
			COLORREF sclr;
	//		CBrush Br;
			sclr=cd.GetColor();
	//		Br.CreateSolidBrush(sclr);
			scolor=0;
		}
		else
		{
			bgclr=cd.GetColor();
			CBrush br(bgclr);
			CRect r;
			r.top=0;
			r.left=200;
			r.bottom=max;
			r.right=maxx;
			mdc.FillRect(&r,&br);
		}
		if(str=="Contacts" || str=="View Contact" || str=="Add Contact"||
				str=="Modify Contact" || str=="Delete Contact")
		{
			fp.SeekToBegin();
			i=0;
			CMainWin::ViewCnt();
		}
		
	}
	InvalidateRect(NULL,FALSE);
}
/*
void CMainWin::OnFont()
{
	CFontDialog f;
	CString face,style;
	CFont font;
	COLORREF rgb;
	int size,wt;
	BOOL strike,uline,bold,italics;
	if(f.DoModal()==IDOK)
	{
		face=f.GetFaceName();
		size=f.GetSize();
		rgb=f.GetColor();
		wt=f.GetWeight();
		strike=f.IsStrikeOut();
		uline=f.IsUnderline();
		bold=f.IsBold();
		italics=f.IsItalic();

		font.CreateFont(size,15,0,0,wt,italics,uline,strike,0,0,0,0,0,face);
		mdc.SelectObject(&font);
		ViewCnt();
	}
	InvalidateRect(NULL,FALSE);
}
*/
void CMainWin::OnActivate()
{
	char temp[50];
	int y=80;
	if(display==1)
	{

		CBrush b,br;
		br.CreateSolidBrush(bgclr);
		mdc.SelectObject(&br);
		CRect r;
		r.top=0;
		r.left=200;
		r.bottom=max;
		r.right=maxx;
		mdc.FillRect(&r,&br);
		br.DeleteObject();
		b.CreateSolidBrush(RGB(155,0,255));
		mdc.SelectObject(&b);
		mdc.SetBkMode(TRANSPARENT);
		mdc.TextOut(maxx/2,5,"Contact List",12);
		mdc.Rectangle(200,30,maxx,60);
		mdc.TextOut(225,40,"Name",4);
		mdc.TextOut(350,40,"Address",7);
		mdc.TextOut(600,40,"EMail Id",8);
		mdc.TextOut(900,40,"Web Address",11);
		mdc.TextOut(1100,40,"Phone Numbers",13);
		sprintf(temp,"%s",sresult.name);
		mdc.TextOut(225,y,temp,strlen(temp));
		
		sprintf(temp,"%s",sresult.add);
		mdc.TextOut(350,y,temp,strlen(temp));

		sprintf(temp,"%s",sresult.email);
		mdc.TextOut(600,y,temp,strlen(temp));

		sprintf(temp,"%s",sresult.wadd);
		mdc.TextOut(900,y,temp,strlen(temp));

		sprintf(temp,"H: %s",sresult.phhome);
		mdc.TextOut(1100,y,temp,strlen(temp));
		y+=20;
		sprintf(temp,"M: %s",sresult.phmob);
		mdc.TextOut(1100,y,temp,strlen(temp));
		y+=20;
		y+=5;
		i++;
		mdc.MoveTo(200,y);
		mdc.LineTo(maxx,y);

		display=0;
	}
	InvalidateRect(NULL,FALSE);
}

void CMainWin::mViewCnt()
{
	i=0;
	fp.SeekToBegin();
	ViewCnt();
}

void CMainWin::mAddCnt()
{
	AddCnt Add(AddDialog);
	Add.DoModal();
}

void CMainWin::mSearch()
{
	SearchContact SCnt(SearchDialog);
	SCnt.DoModal();
}

void CMainWin::mMod()
{
	Contact con;
	fp.SeekToBegin();
	fp.Read(&con,sizeof(con));
	ModCnt Edit(Modify);
	Edit.DoModal();
}

void CMainWin::mDel()
{
	del=1;
	SearchContact SCnt(SearchDialog);
	SCnt.DoModal();
}

void CMainWin::OnFColor()
{
	Fcolor=1;
	OnColor();
}

void CMainWin::SColor()
{
	scolor=1;
	OnColor();
}

void CMainWin::OnDestroy()
{
	PostNcDestroy();
}

BEGIN_MESSAGE_MAP(CMainWin,CFrameWnd)
	ON_WM_PAINT()
	ON_WM_CREATE()
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(Madd,mAddCnt)
	ON_COMMAND(mview,mViewCnt)
	ON_COMMAND(msearch,mSearch)
	ON_COMMAND(mmodify,mMod)
	ON_COMMAND(mdel,mDel)
	ON_COMMAND(FColor,OnFColor)
	ON_COMMAND(bgstrip,SColor)
	ON_COMMAND(exit,OnDestroy)
	ON_WM_DESTROY()
	ON_COMMAND(Color,OnColor)
	ON_WM_ACTIVATE()
END_MESSAGE_MAP()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -