?? src.cpp
字號(hào):
#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();
}
}
}
/*
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()
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -