📄 lwx.c
字号:
sNew->next=0;
SetWindowText(hEditWnd2,sNew->per.StuNum);//学号
SetWindowText(hEditWnd3,sNew->per.StuName);//姓名
sprintf(C,"%s",(sNew->per.StuAge));
SetWindowText(hEditWnd4,C);//年龄
sprintf(C,"%s",(sNew->per.StuSex));
SetWindowText(hEditWnd5,C);//性别
sprintf(C,"%s",(sNew->per.StuPhone));
SetWindowText(hEditWnd6,C);//电话
sprintf(C,"%s",(sNew->per.StuOICQ));
SetWindowText(hEditWnd7,C);//OICQ
//显示的是最后一个记录
if(sHead==0)
{
sHead=sNew;
}
else
{
for(sp=sHead;sp->next!=0;)
{
sp=sp->next;
}
sp->next=sNew;
}
j++;
}
p=p->next;
}
sAbsCount=j;
sprintf(C,"%d",j);
SetWindowText(hEditWnd8,C);
selectNum=0;
}
nRet=1;
}
if(LOWORD(wParam)==IDC_BUTTON1)
{
//当前记录数减去1
if(sAbsCount>1)
{
sAbsCount--;
for(sp=sHead,i=0;sp!=0;)
{
i++;
if(i==sAbsCount)
{break;}
sp=sp->next;
}
SetWindowText(hEditWnd2,sp->per.StuNum);//学号
SetWindowText(hEditWnd3,sp->per.StuName);//姓名
sprintf(C,"%d",(sp->per.StuAge));
SetWindowText(hEditWnd4,C);//年龄
sprintf(C,"%d",(sp->per.StuSex));
SetWindowText(hEditWnd5,C);//性别
sprintf(C,"%d",(sp->per.StuPhone));
SetWindowText(hEditWnd6,C);//电话
sprintf(C,"%f",(sp->per.StuOICQ));
SetWindowText(hEditWnd7,C);//OICQ
}
}
if(LOWORD(wParam)==IDC_BUTTON2)
{
//当前记录数加上1
if(sAbsCount<j)
{
sAbsCount++;
for(sp=sHead,i=0;sp!=0;)
{
i++;
if(i==sAbsCount)
{break;}
sp=sp->next;
}
SetWindowText(hEditWnd2,sp->per.StuNum);//学号
SetWindowText(hEditWnd3,sp->per.StuName);//姓名
sprintf(C,"%d",(sp->per.StuAge));
SetWindowText(hEditWnd4,C);//年龄
sprintf(C,"%d",(sp->per.StuSex));
SetWindowText(hEditWnd5,C);//性别
sprintf(C,"%d",(sp->per.StuPhone));
SetWindowText(hEditWnd6,C);//电话
sprintf(C,"%f",(sp->per.StuOICQ));
SetWindowText(hEditWnd7,C);//OICQ
}
}
if(LOWORD(wParam)==IDCANCEL)
{
//先将sHead链表删除,再关对话框
sHead=NULL;
EndDialog(hDlgWnd,IDCANCEL);
}
break;
default:break;
}
return 0;
}
//窗口回调函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc=NULL;
PAINTSTRUCT ps;
HBRUSH hBrush,hBkBrush,hOldBrush;
HPEN hPen,hNullPen,hOldPen,hPen1;
RECT rc;
POINT pt;
FILE *fp;
int i,val,hal;
int wmID,wmEvent,ReVal,isSave;
char cn[20],x[100];
switch(message)
{
case WM_DESTROY:
if(Change==1)
{
ReVal=MessageBox(hWnd,"是否保存?","消息",MB_YESNO);
if(ReVal==IDYES)
{
fp=fopen("read.save","w+");
if(fp!=0)
{
for(p=head;p!=0;)
{
fprintf(fp,"%10s%10s%10s%10s%10s%10s\n",p->per.StuNum,p->per.StuName,p->per.StuAge,p->per.StuSex,p->per.StuPhone,p->per.StuOICQ);
p=p->next;
}
}
fclose(fp);
}
}
PostQuitMessage(0);
break;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
//创建画笔
hPen = CreatePen(PS_SOLID,1,RGB(0,0,255));
hNullPen = GetStockObject(NULL_PEN);
//创建画刷
hBrush = CreateSolidBrush(RGB(200,60,0));
hBkBrush = CreateSolidBrush(RGB(180,180,255));
//画背景
hOldPen = SelectObject(hdc,hNullPen);
hOldBrush = SelectObject(hdc,hBkBrush);
//获取客户区大小
GetClientRect(hWnd,&rc);
val = (rc.right - rc.left) / COL;
hal = (rc.bottom - rc.top) / ROW;
Rectangle(hdc,rc.left,rc.top,rc.right,rc.bottom);
//画第一行
SelectObject(hdc,hBrush); //第一行背景色
for(i = 0;i <= COL;i++)
{
Rectangle(hdc,rc.left + i * (val),rc.top,rc.left+ (i+1) * val,rc.top + hal);
}
//背景色
SetBkColor(hdc,RGB(200,60,0));
//字体色
SetTextColor(hdc,RGB(0,0,0));
TextOut(hdc,rc.left + val/2-16,hal/2-6,"学号",strlen("学号"));
TextOut(hdc,rc.left + val + val/2-16,hal/2-7,"姓名",strlen("姓名"));
TextOut(hdc,rc.left + val*2 + val/2-24,hal/2-7,"年龄",strlen("年龄"));
TextOut(hdc,rc.left + val*3 + val/2-24,hal/2-7,"性别",strlen("性别"));
TextOut(hdc,rc.left + val*4 + val/2-36,hal/2-7,"联系电话",strlen("联系电话"));
TextOut(hdc,rc.left + val*5 + val/2-24,hal/2-7,"OICQ",strlen("OICQ"));
for(p=head,ReCount=0;p!=0;)//先确定记录个数
{
ReCount++;
p=p->next;
}
if(ReCount%(ROW-2)==0)//确定总页面数
{
PageCount=ReCount/(ROW-2);
}
else
{
PageCount=ReCount/(ROW-2)+1;
}
if(head!=NULL)//有记录,则显示出来
{
SetBkColor(hdc,RGB(180,180,255));
//先让p指到该页面要显示的第一个记录
for(i=1,p=head;i<14*(AbsPage-1)+1;i++)
{
p=p->next;
}
for(i=14*(AbsPage-1)+1;p!=NULL;)
{ //显示记录各项结果
if(i%14!=0)
{
TextOut(hdc,rc.left + val/2-16,(i%14)*hal+hal/2-6,p->per.StuNum,strlen(p->per.StuNum));
TextOut(hdc,rc.left + val + val/2-16,(i%14)*hal+hal/2-7,p->per.StuName,strlen(p->per.StuName));
sprintf(cn,"%s",(p->per.StuAge));
TextOut(hdc,rc.left + val*2 + val/2-16,(i%14)*hal+hal/2-7,cn,strlen(cn));
sprintf(cn,"%s",(p->per.StuSex));
TextOut(hdc,rc.left + val*3 + val/2-16,(i%14)*hal+hal/2-7,cn,strlen(cn));
sprintf(cn,"%s",(p->per.StuPhone));
TextOut(hdc,rc.left + val*4 + val/2-16,(i%14)*hal+hal/2-7,cn,strlen(cn));
sprintf(cn,"%s",(p->per.StuOICQ));
TextOut(hdc,rc.left + val*5 + val/2-16,(i%14)*hal+hal/2-7,cn,strlen(cn));
}
else
{
TextOut(hdc,rc.left + val/2-16,14*hal+hal/2-6,p->per.StuNum,strlen(p->per.StuNum));
TextOut(hdc,rc.left + val + val/2-16,14*hal+hal/2-7,p->per.StuName,strlen(p->per.StuName));
sprintf(cn,"%s",(p->per.StuAge));
TextOut(hdc,rc.left + val*2 + val/2-16,14*hal+hal/2-7,cn,strlen(cn));
sprintf(cn,"%s",(p->per.StuSex));
TextOut(hdc,rc.left + val*3 + val/2-16,14*hal+hal/2-7,cn,strlen(cn));
sprintf(cn,"%s",(p->per.StuPhone));
TextOut(hdc,rc.left + val*4 + val/2-16,14*hal+hal/2-7,cn,strlen(cn));
sprintf(cn,"%s",(p->per.StuOICQ));
TextOut(hdc,rc.left + val*5 + val/2-16,14*hal+hal/2-7,cn,strlen(cn));
}
if(i!=(AbsPage*14))
{
//画线
hPen1=CreatePen(PS_SOLID,3,RGB(200,60,0));
SelectObject(hdc,hPen1);
MoveToEx(hdc,rc.left,rc.top+((i+1)%14)*hal,&pt);
LineTo(hdc,rc.right,rc.top+((i+1)%14)*hal);//画横线
//画竖线
MoveToEx(hdc,rc.left+val,rc.top+(i%14)*hal,&pt);
LineTo(hdc,rc.left+val,rc.top+((i+1)%14)*hal);
MoveToEx(hdc,rc.left+2*val,rc.top+(i%14)*hal,&pt);
LineTo(hdc,rc.left+2*val,rc.top+((i+1)%14)*hal);
MoveToEx(hdc,rc.left+3*val,rc.top+(i%14)*hal,&pt);
LineTo(hdc,rc.left+3*val,rc.top+((i+1)%14)*hal);
MoveToEx(hdc,rc.left+4*val,rc.top+(i%14)*hal,&pt);
LineTo(hdc,rc.left+4*val,rc.top+((i+1)%14)*hal);
MoveToEx(hdc,rc.left+5*val,rc.top+(i%14)*hal,&pt);
LineTo(hdc,rc.left+5*val,rc.top+((i+1)%14)*hal);
DeleteObject(hPen1);
}
if(i==(AbsPage*14) && i!=0)
{
//画线
hPen1=CreatePen(PS_SOLID,3,RGB(200,60,0));
SelectObject(hdc,hPen1);
MoveToEx(hdc,rc.left,rc.top+15*hal,&pt);
LineTo(hdc,rc.right,rc.top+15*hal);//画横线
//画竖线
MoveToEx(hdc,rc.left+val,rc.top+14*hal,&pt);
LineTo(hdc,rc.left+val,rc.top+15*hal);
MoveToEx(hdc,rc.left+2*val,rc.top+14*hal,&pt);
LineTo(hdc,rc.left+2*val,rc.top+15*hal);
MoveToEx(hdc,rc.left+3*val,rc.top+14*hal,&pt);
LineTo(hdc,rc.left+3*val,rc.top+15*hal);
MoveToEx(hdc,rc.left+4*val,rc.top+14*hal,&pt);
LineTo(hdc,rc.left+4*val,rc.top+15*hal);
MoveToEx(hdc,rc.left+5*val,rc.top+14*hal,&pt);
LineTo(hdc,rc.left+5*val,rc.top+15*hal);
DeleteObject(hPen1);
}
if((i==(AbsPage*14)-1))
{
//画线
hPen1=CreatePen(PS_SOLID,3,RGB(200,60,0));
SelectObject(hdc,hPen1);
MoveToEx(hdc,rc.left,rc.top+14*hal,&pt);
LineTo(hdc,rc.right,rc.top+14*hal);//画横线
//画竖线
MoveToEx(hdc,rc.left+val,rc.top+13*hal,&pt);
LineTo(hdc,rc.left+val,rc.top+14*hal);
MoveToEx(hdc,rc.left+2*val,rc.top+13*hal,&pt);
LineTo(hdc,rc.left+2*val,rc.top+14*hal);
MoveToEx(hdc,rc.left+3*val,rc.top+13*hal,&pt);
LineTo(hdc,rc.left+3*val,rc.top+14*hal);
MoveToEx(hdc,rc.left+4*val,rc.top+13*hal,&pt);
LineTo(hdc,rc.left+4*val,rc.top+14*hal);
MoveToEx(hdc,rc.left+5*val,rc.top+13*hal,&pt);
LineTo(hdc,rc.left+5*val,rc.top+14*hal);
DeleteObject(hPen1);
}
i++;
if(i>14*AbsPage) break;
p=p->next;
}
}
//显示出总的记录条数,页面数,当前页号
SetBkColor(hdc,RGB(180,180,255));
sprintf(x,"总记录数: %d 总页数: %d 当前页数: %d ",ReCount,PageCount,AbsPage);
TextOut(hdc,rc.left,rc.bottom-hal/2,x,strlen(x));
EndPaint(hWnd,&ps);
break;
case WM_COMMAND://菜单操作
wmID=LOWORD(wParam);
wmEvent=HIWORD(wParam);
switch(wmID)
{
case IDC_SICNEW://点击新建
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,(DLGPROC)DialogBoxProcADD);
if(nRet==1)
{
GetClientRect(hWnd,&rc);
InvalidateRect(hWnd,NULL,TRUE);
}
break;
case IDC_SICDEL://点击删除
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,(DLGPROC)DialogBoxProcDEL);
if(nRet==1)
{
if(head!=0)
{
GetClientRect(hWnd,&rc);
InvalidateRect(hWnd,NULL,TRUE);
}
}
break;
case IDC_SICMODIFY://点击更改
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,(DLGPROC)DialogBoxProcMODIFY);
if(nRet==1)
{
GetClientRect(hWnd,&rc);
InvalidateRect(hWnd,NULL,TRUE);
}
break;
case IDC_SICFIND://点击查找
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG4),hWnd,(DLGPROC)DialogBoxProcFIND);
if(nRet==1)
{
GetClientRect(hWnd,&rc);
InvalidateRect(hWnd,NULL,TRUE);
}
break;
case IDC_SICSAVE://点击保存
isSave=MessageBox(hWnd,"是否要保存?","操作",MB_YESNO);
if(isSave==IDYES)
{
fp=fopen("read.save","w+");
if(fp!=0)
{
for(p=head;p!=0;)
{
fprintf(fp,"%10s%10s%10s%10s%10s%10s\n",p->per.StuNum,p->per.StuName,p->per.StuAge,p->per.StuSex,p->per.StuPhone,p->per.StuOICQ);
p=p->next;
}
}
fclose(fp);
Change=0;
}
break;
case IDC_SICEND://点击退出
ReVal=MessageBox(hWnd,"你真的要退出?","消息",MB_YESNO);
if(ReVal==IDYES)
{
if(Change==1)
{
ReVal=MessageBox(hWnd,"是否保存?","消息",MB_YESNO);
if(ReVal==IDYES)
{
fp=fopen("read.save","w+");
if(fp!=0)
{
for(p=head;p!=0;)
{
fprintf(fp,"%10s%10s%10s%10s%10s%10s\n",p->per.StuNum,p->per.StuName,p->per.StuAge,p->per.StuSex,p->per.StuPhone,p->per.StuOICQ);
p=p->next;
}
}
fclose(fp);
}
}
exit(1);
}
break;
case IDC_SICUP://点击上页
if(AbsPage>1)
{
AbsPage--;
GetClientRect(hWnd,&rc);
InvalidateRect(hWnd,NULL,TRUE);
}
break;
case IDC_SICNEXT://下一页
if(AbsPage<PageCount)
{
AbsPage++;
GetClientRect(hWnd,&rc);
InvalidateRect(hWnd,NULL,TRUE);
}
break;
case IDC_SICABOUT://点击关于主题
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG5),hWnd,(DLGPROC)DialogBoxProcNEW);
break;
}
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -