mfc 编写万年历 怎么编 我是白痴 求指导
我这里有现成的代码,可供你参考,主要是自绘的实现,附件给你两个版本的,均是MFC的(如下图)。
第一个是摘自网上的程序,但经我改良,农历数据使用自创的算法,年份支持也大大增加(从公元1600年至7000年),并且修正了部分错误。
第二个是自创的,是MFC绘制出来的界面,支持两种视图。
代码都是在VS2008上编译通过的,如需要源代码,请追问。
//判断闰年,参数:年份,闰年,返回值:FALSE-失败,TRUE-成功staticBOOLIsLeapYear(WORDdwYear,BOOL&bLeapYear);
//计算日期在年内的序数,参数:年,月,日,年内序数,返回值:FALSE-失败,TRUE-成功
staticBOOLGetDaysNumInYear(WORDdwYear,WORDdwMonth,WORDdwDay,WORD&nDays);
//从年内序数计算月、日,参数:年,年内序数,月,日,返回值:FALSE-失败,TRUE-成功
staticBOOLGetDateFromDays(WORDdwYear,WORDnDays,WORD&dwMonth,WORD&dwDay);
//获取农历新年的公历年内序数,参数:农历年,返回值:农历新年的公历年内序数
staticshortLunarGetNewYearOrdinal(WORDdwLunarYear);
//获取农历月的天数,参数:农历年,农历月,是否为闰月,返回值:该农历月的天数,为0代表参数无效
staticWORDLunarGetDaysofMonth(WORDdwLunarYear,WORDdwLunarMonth,BOOLbLeapMonth);
//获取农历某一年的闰月情况,参数:农历年,返回值,该年的闰月月份,0表示无闰月
staticWORDLunarGetLeapMonth(WORDdwLunarYear);
//公历转农历,参数:公历年、月、日,农历年、月、日,是否为闰月,返回值:FALSE-失败,TRUE-成功
staticBOOLGetLunar(WORDdwYear,WORDdwMonth,WORDdwDay,WORD&dwLunarYear,WORD&dwLunarMonth,WORD&dwLunarDay,BOOL&bLeapMonth);
//农历转公历,参数:家历年、月、日,是否为闰月,公历年、月、日,返回值:FALSE-失败,TRUE-成功
staticBOOLGetGregorian(WORDdwLunarYear,WORDdwLunarMonth,WORDdwLunarDay,BOOLbLeapMonth,WORD&dwYear,WORD&dwMonth,WORD&dwDay);
//得到指定年份的节气信息,首个是小寒
staticBOOLGetJieQi(WORDdwYear,WORDdwMonth,WORDdwJieQi[2]);
//计算星期,返回-1表示输入的年月日不正确或者超出年份范围
staticshortGetDayOfWeek(WORDdwYear,WORDdwMonth,WORDdwDay);
//计算某个月的天数,返回天数,如果返回0表示年或月有误
staticWORDGetDaysOfMonth(WORDdwYear,WORDdwMonth);
//把iYear年格式化成天干记年法表示的字符串
staticvoidFormatLunarYear(WORDiYear,char*pBuffer);
//把iMonth格式化成中文字符串
staticvoidFormatLunarMonth(WORDiMonth,char*pBuffer,BOOLbLeapMonth=FALSE);
//把iDay格式化成中文字符串
staticvoidFormatLunarDay(WORDiDay,char*pBuffer);
多重随机标签