📄 finddlg.cpp
字号:
// finddlg.cpp : implementation file
//
#include "stdafx.h"
#include "studentwin.h"
#include "finddlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Cfinddlg dialog
Cfinddlg::Cfinddlg(CWnd* pParent /*=NULL*/)
: CDialog(Cfinddlg::IDD, pParent)
{
pstudent=NULL;
find=false;
findcursor=-1;
m_dlg=NULL;
str="";
i=0;
stop=false;
m_record="显示查询信息";
//{{AFX_DATA_INIT(Cfinddlg)
m_data = _T("");
m_record = _T("");
pDoc=NULL;
counter=0;
kind=1;
m_num = _T("");
m_num2 = _T("");
//}}AFX_DATA_INIT
}
void Cfinddlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Cfinddlg)
DDX_Control(pDX, IDC_PROGRESS1, m_pro);
DDX_Control(pDX, IDC_data, m_editdata);
DDX_Control(pDX, IDC_finish, m_finish);
DDX_Control(pDX, IDC_staticstop, m_staticstop);
DDX_Control(pDX, IDC_staticstart, m_staticstart);
DDX_Control(pDX, IDC_staticname, m_staticname);
DDX_Text(pDX, IDC_data, m_data);
DDX_Text(pDX, IDC_record, m_record);
DDX_Text(pDX, IDC_NUM, m_num);
DDX_Text(pDX, IDC_NUM2, m_num2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Cfinddlg, CDialog)
//{{AFX_MSG_MAP(Cfinddlg)
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Cfinddlg message handlers
void Cfinddlg::OnMouseMove(UINT nFlags, CPoint point)
{
if(point.x>startrect.left&&point.x<startrect.right&&point.y>startrect.top&&point.y<startrect.bottom)
{
UpdateData();
CDC*pDC=GetDC();
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(200,0,20));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(startrect.left-2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);
}
else{
if(point.x>finishrect.left&&point.x<finishrect.right&&point.y>finishrect.top&&point.y<finishrect.bottom)
{
CDC*pDC=GetDC();
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(200,0,20));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(finishrect.left-2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);
}
else{
CDC*pDC=GetDC();
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(0,0,0));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(finishrect.left-2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.top-2);
pDC->MoveTo(startrect.left-2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC); }
}
CDialog::OnMouseMove(nFlags, point);
}
void Cfinddlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if(point.x>startrect.left&&point.x<startrect.right&&point.y>startrect.top&&point.y<startrect.bottom)
{
UpdateData();
m_staticstart.SetWindowText("正在查询");
stop=false;
CDC*pDC=GetDC();
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(100,100,255));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(startrect.left-2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.top-2);
pDC->LineTo(startrect.right+2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.bottom+2);
pDC->LineTo(startrect.left-2,startrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);
finddata();
}
if(point.x>finishrect.left&&point.x<finishrect.right&&point.y>finishrect.top&&point.y<finishrect.bottom)
{
CDC*pDC=GetDC();
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(200,0,255));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(finishrect.left-2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.top-2);
pDC->LineTo(finishrect.right+2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.bottom+2);
pDC->LineTo(finishrect.left-2,finishrect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);
PostMessage(WM_CLOSE);
}
/* if(point.x>stoprect.left&&point.x<stoprect.right&&point.y>stoprect.top&&point.y<stoprect.bottom)
{
CDC*pDC=GetDC();
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(200,0,20));
CPen*oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(stoprect.left-2,stoprect.top-2);
pDC->LineTo(stoprect.right+2,stoprect.top-2);
pDC->LineTo(stoprect.right+2,stoprect.bottom+2);
pDC->LineTo(stoprect.left-2,stoprect.bottom+2);
pDC->LineTo(stoprect.left-2,stoprect.top-2);
pDC->SelectObject(oldpen);
ReleaseDC(pDC);
stop=true;
UpdateData(false);
}*/
CDialog::OnLButtonDown(nFlags, point);
}
BOOL Cfinddlg::OnInitDialog()
{
//////////////
CDialog::OnInitDialog();
m_num.Format("%d",pDoc->m_dataList.GetCount());
UpdateData(false);
MoveWindow(320,100,440,300);
switch(kind)
{
case 1:m_staticname.SetWindowText("请输入你要查询的姓名:");break;
case 2:m_staticname.SetWindowText("请输入你要查询的地址:");break;
case 3:m_staticname.SetWindowText("请输入你要查询的年龄:");break;
case 4:m_staticname.SetWindowText("请输入你要查询的课程(不及格)");break;
default:break;
}
m_finish.GetWindowRect(&finishrect);
m_staticstart.GetWindowRect(&startrect);
m_staticstop.GetWindowRect(&stoprect);
ScreenToClient(&finishrect);
ScreenToClient(&startrect);
ScreenToClient(&stoprect);
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Cfinddlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(20,20,60));
CPen*oldpen=dc.SelectObject(&pen);
dc.MoveTo(startrect.left-2,startrect.top-2);
dc.LineTo(startrect.right+2,startrect.top-2);
dc.LineTo(startrect.right+2,startrect.bottom+2);
dc.LineTo(startrect.left-2,startrect.bottom+2);
dc.LineTo(startrect.left-2,startrect.top-2);
dc.MoveTo(finishrect.left-2,finishrect.top-2);
dc.LineTo(finishrect.right+2,finishrect.top-2);
dc.LineTo(finishrect.right+2,finishrect.bottom+2);
dc.LineTo(finishrect.left-2,finishrect.bottom+2);
dc.LineTo(finishrect.left-2,finishrect.top-2);
dc.SelectObject(oldpen);
}
void Cfinddlg::finddata()
{
int recordcouter=0;
switch(kind)
{
case 1:
m_pro.SetRange(1,100);
//int i=100/counter;
m_pro.SetStep(1);
m_pro.SetPos(0);
m_pro.StepIt();
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
while(pDoc->curpos!=NULL)
{
if(stop==true)
{
//find=false;
//break;
}
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
if(pstudent->name==m_data)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
find=true;
//break;
}
recordcouter++;
for(int i=0;i<20000000;i++);
m_record.Format("第%d条纪录",recordcouter);
pDoc->m_dataList.GetNext(pDoc->curpos);
m_pro.SetPos(recordcouter+1);
UpdateData(false);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;
}//没有查到
}
if(find==true)
{
m_staticstart.SetWindowText("查询");
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);
find=false;
}
break;
case 2:
i=0;
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
while(pDoc->curpos!=NULL)
{
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
if(pstudent->addr.Find(m_data)==0)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
find=true;
//break;
}
recordcouter++;
m_record.Format("第%d条纪录",recordcouter);
for(int i=0;i<20000000;i++);
UpdateData(false);
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;
}//没有查到
}
if(find==true)
{
m_staticstart.SetWindowText("查询");
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);
find=false;
}
break;
case 3:
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
testdata();
while(pDoc->curpos!=NULL)
{
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
str.Format("%d",2002-pstudent->year);
if(str==m_data)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
find=true;
//break;
}
recordcouter++;
m_record.Format("第%d条纪录",recordcouter);
for(int i=0;i<20000000;i++);
UpdateData(false);
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;//没有查到
}
}
if(find==true)
{
m_staticstart.SetWindowText("查询");
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);
find=false;
}
break;
case 4:
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
while(pDoc->curpos!=NULL)
{
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
for(i=0;i<4;i++)
{
if(pstudent->lesson[i].name==m_data&&pstudent->lesson[i].fen<60)
{
findcursor++;
m_num2.Format("%d",findcursor+1);
UpdateData(false);
p[findcursor]=pDoc->curpos;
find=true;
break;
}
}
recordcouter++;
m_record.Format("第%d条纪录",recordcouter);
for(int d=0;d<20000000;d++);
UpdateData(false);
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
{
m_staticstart.SetWindowText("查询");
break;//没有查到
}
}
if(find==true)
{
m_staticstart.SetWindowText("查询");
m_dlg=new Cdoubledlg(this);
m_dlg->dlgtype=2;
m_dlg->pDoc=pDoc;
for(int i=0;i<findcursor+1;i++)
m_dlg->p[i]=p[i];
m_dlg->findcouter=findcursor+1;
m_dlg->open=true;
m_dlg->Create(IDD_doubleview,this);
m_dlg->ShowWindow(SW_SHOW);
find=false;
}
break;
default:break;
}
}
void Cfinddlg::testdata()
{
if(m_data.Find('a')==0||m_data.Find('b')==0||m_data.Find('c')==0
||m_data.Find('d')==0||m_data.Find('e')==0||m_data.Find('f')==0||m_data.Find('g')==0
||m_data.Find('h')==0||m_data.Find('i')==0||m_data.Find('i')==0||m_data.Find('k')==0
||m_data.Find('l')==0||m_data.Find('m')==0||m_data.Find('n')==0||m_data.Find('o')==0
||m_data.Find('p')==0||m_data.Find('q')==0||m_data.Find('r')==0||m_data.Find('s')==0
||m_data.Find('t')==0||m_data.Find('u')==0||m_data.Find('v')==0||m_data.Find('w')==0
||m_data.Find('x')==0||m_data.Find('y')==0||m_data.Find('z')==0)
MessageBox("请输入整数");
m_editdata.SetFocus();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -