分享两段MFC程序(CDate类+窗口消息事件)
无意中翻到了一个大学时候的程序,特在此分享一下。尽管已经不涉猎VC领域了,但是还是希望对需要的人会有帮助。
1、CDate类
#include <iostream.h> class CDate { public: CDate(); //默认构造函数 virtual ~CDate(){} //释放系统资源 void showdate(); //显示日期函数声明 CDate operator ++(); //重载前缀自增运算符函数声明 CDate operator ++(int); //重载后缀自增运算符函数声明 int days(); //计算该年的第几天函数声明 CDate set_day();//重新输入(年月日)函数声明 int nday; //天数 private: int year; int month; int day; static int cday[13];//定义静态数组成员 }; int CDate::cday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//初始化静态数组变量 CDate::days() { int i; nday=0; for(i=0;i<month;i++) nday+=cday[i]; nday+=day; if((year%4 == 0&&year%100!=0||year%400 == 0)&&month >=3) nday+=1; return(nday); } CDate::CDate() { cout<<"请输入年月日:"; cin>>year>>month>>day; while(day>31||day<1||month<1||month>12||year<1||year>9999) { cout<<"输入不合法!"<<endl; cout<<"请重新输入:"; cin>>year>>month>>day; } } CDate CDate::set_day() { cout<<"请输入年月日):"; cin>>year>>month>>day; while(day>31||day<1||month<1||month>12||year<1||year>9999) { cout<<"输入不合法!"<<endl; cout<<"请重新输入:"; cin>>year>>month>>day; } return *this; } void CDate::showdate() { cout<<year<<"年"<<month<<"月"<<day<<"日"; } CDate CDate::operator ++() { int day_m; if(month ==2&&(year%4 ==0&&year%100!=0||year%400 ==0)) //闰年的二月 { day_m = cday[month]+1; } else { day_m = cday[month]; } if(day<day_m) { ++day; } else { if(day=day_m&&month == 12) { ++year; month = 1; day = 1; nday = 0;} else { ++month; day = 1; } } nday+=1; return *this; } CDate CDate::operator ++(int) { CDate tmp(*this);//创建临时对象 int day_m; if(month == 2&&(year%4 == 0&&year%100!=0||year%400 == 0)) { day_m = cday[month]+1; } else { day_m = cday[month]; } if(day<day_m) //如果日小于月的最大日数 { ++day; } else { if(day=day_m&&month == 12) //如果日等于月的最大日数且是12月 { ++year; month = 1; day = 1; nday = 0; } else { ++month; day = 1; } } nday+=1; return tmp;//返回临时对象 } int main() { CDate date; int nchoice= -1; while(nchoice!= 0) { cout<<endl; cout<<"1.计算该日期在一年中的第几天:"<<endl; cout<<"2.使天数加一天(前缀):"<<endl; cout<<"3.使天数加一天(后缀):"<<endl; cout<<"4.重新输入(年月日):"<<endl; cout<<"5.退出:"<<endl; cout<<"请选择:"; cin>>nchoice; switch(nchoice) { case 1: int nday; date.showdate(); nday=date.days(); cout<<"在这一年中是第"<<nday<<"天."<<endl; break; case 2: ++date; date.showdate(); nday=date.nday; cout<<"在这一年中是第"<<nday<<"天."<<endl; break; case 3: date++; date.showdate(); nday=date.nday; cout<<"在这一年中是第"<<nday<<"天."<<endl; break; case 4: date.set_day(); break; case 5: return 0; break; default: cout<<"输入错误!"<<endl; } } return 0; }
2、窗口消息事件
void CTESTView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); int x1,y1,x2,y2; int color=RGB(0,0,255); CPen newPen(PS_SOLID,1,color); CPen *oldPen=dc.SelectObject(&newPen); x1=point.x-6; y1=point.y-6; x2=point.x+6; y2=point.y+6; dc.Ellipse(x1,y1,x2,y2); dc.SelectObject(oldPen); CView::OnLButtonDown(nFlags, point); } void CTESTView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); CString str; int pt1,pt2; pt1=point.x; pt2=point.y; str.Format("x=%d,y=%d",pt1,pt2); dc.SetTextColor(RGB(255,0,0)); dc.TextOut(pt1-10,pt2+10,str); CView::OnLButtonUp(nFlags, point); } void CMainFrame::OnClose() { // TODO: Add your message handler code here and/or call default int i; i=MessageBox("确定要关闭吗","关闭",MB_YESNO); if(i==IDYES) { CFrameWnd::OnClose(); } else { ; } }
本文固定链接:http://www.penglig.com/post-301.html
本文由Cfans_gpl原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址。
本文由Cfans_gpl原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址。