精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>算法集锦--------梦入玄机>>计算农历的一个类

主题:计算农历的一个类
发信人: headstream()
整理人: mrcloud(2000-11-28 17:28:17), 站内信件
从某个站上当的,忘了是哪里,不是我写的 
///.H 

/*********************************************************************
 
****** 
   致看到这些源代码的兄弟: 
       你好! 
       这本来是我为一个商业PDA产品开发的日历程序,最近移植于PC机上, 所以
 
算法 
   和数据部分是用纯C++写的,不涉及MFC,所有的代码都是以短节省存储空间为主
 
要目 
   的. 
   很高兴你对这些代码有兴趣,你可以随意复制和使用些代码,唯一有一点小小 

的 
   愿望:在你使用和复制给别人时,别忘注明这些代码作者:-)。程序代码也就罢
 
了,后 
   面的数据可是我辛辛苦苦从万年历上找出来输进去的。 
   如果你有什么好的意见不妨Mail给我。 

       [email protected] 
   或 
   [email protected] 
                                                                 2000年
 
3月 
**********************************************************************
 
******/ 
#if !defined(AFX_CALENDAR1_H__FD9A6DAF_8C3C_493C_AAD4_612134D8F6D4__IN
 
CLUDED_) 
#define AFX_CALENDAR1_H__FD9A6DAF_8C3C_493C_AAD4_612134D8F6D4__INCLUDE
 
D_ 

#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
// Calendar1.h : header file 
//////////////////////////////////////////////////////////////////////
 
/////// 
// CCalendar window 
extern const WORD START_YEAR; 
extern const WORD END_YEAR; 

//define user message select changed 
#define UM_SELCHANGE  (WM_USER+101) 

class CCalendar : public CWnd 

private: 
WORD    m_iYear, m_iMonth, m_iDay; 
CBitmap m_oBitMapList[42]; 
CMenu   m_oPopMenu; 

public: 
COLORREF m_dwBackColor,  m_dwForeColor; 
COLORREF m_dwSelColor,   m_dwSelForeColor; 
COLORREF m_dwTitleBkColor, m_dwTitleColor; 

public: 
CCalendar(WORD iYear, WORD iMonth, WORD iDay); 
CCalendar(); 
virtual BOOL Create(RECT &rect, CWnd * pParentWnd, UINT nID); 

public: 
WORD GetYear(){return m_iYear;} 
WORD GetMonth(){return m_iMonth;} 
WORD GetDay(){return m_iDay;} 
void GetDate(WORD &iYear, WORD &iMonth, WORD &iDay); 
BOOL SetDate(WORD iYear, WORD iMonth, WORD iDay); 

protected: 
CButton m_obutToday; 
//{{AFX_MSG(CCalendar) 
afx_msg void OnPaint(); 
afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); 
//}}AFX_MSG 
afx_msg void OnTitleBkColor(); 
afx_msg void OnTitleColor(); 
afx_msg void OnSelColor(); 
afx_msg void OnForeColor(); 
DECLARE_MESSAGE_MAP() 


public: 
//判断iYear是不是闰年 
    static BOOL IsLeapYear(WORD iYear) 
{return !(iYear%4)&&(iYear%100) || !(iYear%400);} 

//计算iYear,iMonth,iDay对应是星期几 1年1月1日 --- 65535年12月31日 
static WORD WeekDay(WORD iYear, WORD iMonth, WORD iDay); 

//返回iYear年iMonth月的天数 1年1月 --- 65535年12月 
static WORD MonthDays(WORD iYear, WORD iMonth); 

//返回阴历iLunarYer年阴历iLunarMonth月的天数,如果iLunarMonth为闰月, 


//高字为第二个iLunarMonth月的天数,否则高字为0  
// 1901年1月---2050年12月 
static LONG LunarMonthDays(WORD iLunarYear, WORD iLunarMonth); 

//返回阴历iLunarYear年的总天数 
// 1901年1月---2050年12月 
static WORD LunarYearDays(WORD iLunarYear); 

//返回阴历iLunarYear年的闰月月份,如没有返回0 
// 1901年1月---2050年12月 
static WORD GetLeapMonth(WORD iLunarYear); 

//把iYear年格式化成天干记年法表示的字符串 
static void FormatLunarYear(WORD  iYear, char *pBuffer); 

//把iMonth格式化成中文字符串 
static void FormatMonth(WORD iMonth, char *pBuffer, BOOL bLunar = TRU 

E); 

    //把iDay格式化成中文字符串 
static void FormatLunarDay(WORD  iDay, char *pBuffer); 

//计算公历两个日期间相差的天数  1年1月1日 --- 65535年12月31日 
static LONG CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndDay, 


                     WORD iStartYear = START_YEAR,  
 WORD iStartMonth =1, WORD iStartDay =1); 

//计算公历iYear年iMonth月iDay日对应的阴历日期,返回对应的阴历节气 0-24 


//1901年1月1日---2050年12月31日 
static WORD GetLunarDate(WORD iYear, WORD iMonth, WORD iDay, 
                     WORD &iLunarYear, WORD &iLunarMonth, WORD &iLun 

arDay); 

public: 
virtual ~CCalendar(); 

private: 
void   l_InitData(); 

//计算从1901年1月1日过iSpanDays天后的阴历日期 
static void   l_CalcLunarDate(WORD &iYear, WORD &iMonth ,WORD &iDay,  

LONG iSpanDays); 
    //计算公历iYear年iMonth月iDay日对应的节气 0-24,0表不是节气 
static WORD   l_GetLunarHolDay(WORD iYear, WORD iMonth, WORD iDay); 

WORD l_CalcSelectDay(POINT * pt); 
void l_PaintTitle(CPaintDC &dc); 
void l_PaintDate(CPaintDC &dc); 
inline void l_PaintOneDay(CPaintDC &dc, CDC &imgdc, WORD &iDay,  
                        WORD &iLunarYear, 
                        WORD &iLunarMonth, WORD &iLuanrDay,  
LONG startx, LONG starty); 
}; 

//////////////////////////////////////////////////////////////////////
 
/////// 

//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediatel
 
y before the previous line. 

#endif // !defined(AFX_CALENDAR1_H__FD9A6DAF_8C3C_493C_AAD4_612134D8F6
 
D4__INCLUDED_) 

///.CPP 
/*********************************************************************
 
****** 
   致看到这些源代码的兄弟: 
       你好! 
       这本来是我为一个商业PDA产品开发的日历程序,最近移植于PC机上, 所以
 
算法 
   和数据部分是用纯C++写的,不涉及MFC,所有的代码都是以短节省存储空间为主
 
要目 
   的. 
   很高兴你对这些代码有兴趣,你可以随意复制和使用些代码,唯一有一点小小 

的 
   愿望:在你使用和复制给别人时,别忘注明这些代码作者:-)。程序代码也就罢
 
了,后 
   面的数据可是我辛辛苦苦从万年历上找出来输进去的。 
   如果你有什么好的意见不妨Mail给我。 

       [email protected] 
   或 
   [email protected] 
                                                                 2000年
 
3月 
**********************************************************************
 
******/ 
#include "stdafx.h" 
#include "Calendar.h" 
#include "Calendar1.h" 
#include "Calendarfrm.h" 

#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 

//////////////////////////////////////////////////////////////////////
 
/////// 
// CCalendar 


extern WORD gLunarMonthDay[]; 
extern BYTE gLunarMonth[]; 
extern BYTE gLunarHolDay[]; 

const WORD START_YEAR =1901; 
const WORD END_YEAR   =2050; 

void CCalendar::l_InitData() 

SYSTEMTIME systime; 
::GetSystemTime(&systime); 

m_iYear  = systime.wYear; 
m_iMonth = systime.wMonth; 
m_iDay   = systime.wDay; 

m_dwBackColor      = RGB(255,255,255); 
m_dwForeColor      = RGB(0,0,0); 
m_dwSelColor       = RGB(150,150,230); 
m_dwSelForeColor   = RGB(255,255,255); 
m_dwTitleBkColor     = RGB(190,70,70); 
m_dwTitleColor = RGB(255,255,0); 



CCalendar::CCalendar(WORD iYear, WORD iMonth, WORD iDay) 

   if(!SetDate(iYear, iMonth, iDay)) 
   l_InitData(); 


CCalendar::CCalendar() 

   l_InitData(); 


CCalendar::~CCalendar() 

  DestroyWindow();  



BEGIN_MESSAGE_MAP(CCalendar, CWnd) 
//{{AFX_MSG_MAP(CCalendar) 
ON_WM_PAINT() 
ON_WM_LBUTTONDOWN() 
ON_WM_CONTEXTMENU() 
ON_WM_CREATE() 
//}}AFX_MSG_MAP 
ON_COMMAND(ID_TITLEBKCOLOR, OnTitleBkColor) 
ON_COMMAND(ID_TITLECOLOR,   OnTitleColor) 
ON_COMMAND(ID_SELCOLOR,     OnSelColor) 
ON_COMMAND(ID_FORECOLOR,    OnForeColor) 
END_MESSAGE_MAP() 

#define COL_WIDTH    32 
#define ROW_HEIGHT   20 
#define TITLE_HEIGHT 20 

BOOL CCalendar::Create(RECT &rect, CWnd *pParentWnd, UINT nID) 

    CString szClassName = AfxRegisterWndClass(CS_CLASSDC|CS_SAVEBITS| 


                                      CS_HREDRAW|CS_VREDRAW, 
                                              0, (HBRUSH)CBrush(RGB(25
 
5,255,255)), 0); 

rect.right = rect.left + COL_WIDTH*7 +4; 
    rect.bottom = rect.top + TITLE_HEIGHT+ROW_HEIGHT*6 +10 ; 
if(!CWnd::CreateEx(WS_EX_CLIENTEDGE, szClassName, _T(""), 
                WS_CHILD|WS_VISIBLE|WS_TABSTOP, rect,  
pParentWnd, nID, NULL))  

   return FALSE; 

    UpdateWindow(); 
    for(int i=0; i<42; i++)
m_oBitMapList[i].LoadBitmap(IDB_BITMAP1+i);

m_oPopMenu.CreatePopupMenu();
m_oPopMenu.AppendMenu(MF_STRING, ID_TITLEBKCOLOR, _T("标题背景色...")

);
m_oPopMenu.AppendMenu(MF_STRING, ID_TITLECOLOR, _T("标题前景色...")

);
m_oPopMenu.AppendMenu(MF_STRING, ID_FORECOLOR , _T("日期前景色...")

);
m_oPopMenu.AppendMenu(MF_STRING, ID_SELCOLOR, _T("选中区颜色..."

));

return TRUE;
}

//////////////////////////////////////////////////////////////////////

///////
// CCalendar message handlers
void CCalendar::l_PaintTitle(CPaintDC &dc)
{
CRect rect ;
GetClientRect(&rect);

rect.left ++; rect.top ++;
rect.right --; rect.bottom = rect.top + TITLE_HEIGHT;
dc.FillRect(&rect, &CBrush(m_dwTitleBkColor));

dc.SetBkColor(m_dwTitleBkColor);
dc.SetTextColor(m_dwTitleColor);

int startx = rect.left +8;
char sztext[][3]={"日","一","二","三","四","五","六"};
for(int i=0; i <7; i++)
{
dc.TextOut(startx, rect.top +2, sztext[i]);
startx += COL_WIDTH;
}
}

void CCalendar:: l_PaintOneDay(CPaintDC &dc, CDC &imgdc, WORD &iDay,


WORD &iLunarYear, WORD &iLunarMonth,
WORD &iLunarDay,
LONG startx, LONG starty)
{
char text[3];
sprintf(text, "%2d", iDay);

// select icon
if(iLunarDay!=1)
imgdc.SelectObject(&m_oBitMapList[iLunarDay-1]);
else
imgdc.SelectObject(&m_oBitMapList[29+iLunarMonth]);

// if day == current day
if(iDay++ == m_iDay)
{
dc.FillRect(&CRect(startx-1, starty,
startx +COL_WIDTH-3, starty + ROW_HEIGHT),
&CBrush(m_dwSelColor));
dc.SetTextColor(m_dwSelForeColor);
dc.SetBkColor(m_dwSelColor);
dc.TextOut(startx, starty +2, text);
dc.SetBkColor(m_dwBackColor);
dc.SetTextColor(m_dwForeColor);
dc.BitBlt(startx+17, starty +2, 8,16,&imgdc,0,0,MERGEPAINT);
}
else
{
dc.TextOut(startx, starty+2, text);
dc.BitBlt(startx+17, starty +2, 8,16,&imgdc,0,0,SRCCOPY);
}

if(iLunarDay<29)
iLunarDay++;
else
{
LONG days = LunarMonthDays(iLunarYear, iLunarMonth);
if(!HIWORD(days) && iLunarDay == LOWORD(days))
iLunarMonth = (iLunarMonth)%12+1;
if(iLunarDay < LOBYTE(days))
iLunarDay++;
else
iLunarDay =1;
}
}

void CCalendar::l_PaintDate(CPaintDC &dc)
{
CDC imgdc;
imgdc.CreateCompatibleDC(&dc);

RECT rect;
GetClientRect(&rect);
rect.top +=TITLE_HEIGHT+6;

dc.SetBkColor(m_dwBackColor);
dc.SetTextColor(m_dwForeColor);

WORD day =1;
WORD iLunarYear, iLunarMonth, iLunarDay;
GetLunarDate(m_iYear, m_iMonth, 1, iLunarYear, iLunarMonth, iLunarD

ay);

for(int i=0; i<6; i++, rect.top += ROW_HEIGHT)
{
long startx = rect.left +2;
for(int j=0; j<7; j++,startx += COL_WIDTH)
{
if(j < WeekDay(m_iYear, m_iMonth, 1) && i==0)
continue;

if(day > MonthDays(m_iYear, m_iMonth)) 
   break; 

           l_PaintOneDay(dc, imgdc, day, iLunarYear, iLunarMonth, 
                            iLunarDay, startx, rect.top); 
   } 



void CCalendar::OnPaint()  

CPaintDC dc(this); // device context for painting 

CFont *font = ((CCalendarFrm *)GetParent())->GetDispFont(); 
dc.SelectObject(font); 
    dc.SetMapMode(0);  
l_PaintTitle(dc); 
l_PaintDate(dc); 



LONG CCalendar::CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndD
 
ay, 
                    WORD  iStartYear, WORD iStartMonth, WORD iStartD 

ay) 

WORD monthday[]={0, 31, 59 ,90, 120, 151, 181, 212, 243, 273, 304, 33 

4};  

//计算两个年份1月1日之间相差的天数 
LONG iDiffDays =(iEndYear - iStartYear)*365; 
iDiffDays += (iEndYear-1)/4 - (iStartYear-1)/4; 
iDiffDays -= ((iEndYear-1)/100 - (iStartYear-1)/100); 
iDiffDays += (iEndYear-1)/400 - (iStartYear-1)/400; 

    //加上iEndYear年1月1日到iEndMonth月iEndDay日之间的天数 
    iDiffDays += monthday[iEndMonth-1] + 
                           (IsLeapYear(iEndYear)&&iEndMonth>2? 1: 0) 


    iDiffDays += iEndDay; 

//减去iStartYear年1月1日到iStartMonth月iStartDay日之间的天数 
iDiffDays -= (monthday[iStartMonth-1] +  
                  (IsLeapYear(iStartYear)&&iStartMonth>2 ? 1: 0)); 
    iDiffDays -= iStartDay; 
return iDiffDays; 


void  CCalendar::l_CalcLunarDate(WORD &iYear, WORD &iMonth ,WORD &iDay
 
, LONG iSpanDays) 

//阳历1901年2月19日为阴历1901年正月初一 
//阳历1901年1月1日到2月19日共有49天 
    if(iSpanDays <49)
{
iYear = START_YEAR-1;
if(iSpanDays <19)
{
iMonth = 11;
iDay = 11+WORD(iSpanDays);
}
else
{
iMonth = 12;
iDay = WORD(iSpanDays) -18;
}
return ;
}
//下面从阴历1901年正月初一算起
iSpanDays -=49;
iYear = START_YEAR;
iMonth = 1;
iDay = 1;
//计算年
LONG tmp = LunarYearDays(iYear);
while(iSpanDays >= tmp) 

iSpanDays -= tmp; 
tmp = LunarYearDays(++iYear); 

    //计算月 
tmp = LOWORD(LunarMonthDays(iYear, iMonth)); 
while(iSpanDays >= tmp) 

iSpanDays -= tmp; 
    if(iMonth == GetLeapMonth(iYear)) 

tmp  = HIWORD(LunarMonthDays(iYear, iMonth)); 
if(iSpanDays < tmp)
break;
iSpanDays -= tmp;
}
tmp = LOWORD(LunarMonthDays(iYear, ++iMonth));
}
//计算日
iDay += WORD(iSpanDays);
}

WORD CCalendar::GetLunarDate(WORD iYear, WORD iMonth, WORD iDay,
WORD &iLunarYear, WORD &iLunarMonth, WORD &iLun

arDay)
{
l_CalcLunarDate(iLunarYear, iLunarMonth, iLunarDay,
CalcDateDiff(iYear, iMonth, iDay));

return l_GetLunarHolDay(iYear, iMonth, iDay);
}

//根据节气数据存储格式,计算阳历iYear年iMonth月iDay日对应的节气,
WORD CCalendar::l_GetLunarHolDay(WORD iYear, WORD iMonth, WORD iDay)


{
BYTE &flag = gLunarHolDay[(iYear - START_YEAR)*12+iMonth -1];
WORD day;
if(iDay <15)
day= 15 - ((flag>>4)&0x0f); 
else 
day = ((flag)&0x0f)+15; 
if(iDay == day) 
   return (iMonth-1) *2 + (iDay>15? 1: 0) +1;  
else 
   return 0; 


void CCalendar::GetDate(WORD &iYear, WORD &iMonth, WORD &iDay)  

iYear  = m_iYear; 
iMonth = m_iMonth; 
iDay   = m_iDay; 


BOOL CCalendar::SetDate(WORD iYear, WORD iMonth, WORD iDay) 

  if(iYear < START_YEAR || iYear > END_YEAR || iMonth <1 || iMonth >12
 

     return FALSE; 

  if(iDay <1 || iDay > MonthDays(iYear, iMonth)) 
    return FALSE; 

  m_iYear   = iYear; 
  m_iMonth  = iMonth; 
  m_iDay    = iDay; 

  return TRUE; 
}  

WORD CCalendar::WeekDay(WORD iYear, WORD iMonth, WORD iDay) 

    //数组元素monthday[i]表示第i个月以前的总天数除以7的余数 
WORD monthday[]={0,3,3,6,1,4,6,2,5,0,3,5}; 
WORD iDays = (iYear-1)%7 + (iYear-1)/4 - (iYear-1)/100 +(iYear-1)/400 


iDays += (monthday[iMonth-1] +iDay) ; 
//如果iYear是闰年 
    if(IsLeapYear(iYear) && iMonth>2) 
iDays++; 
//返回:0,1,2,3,4,5,6表日、一、二、三、四、五、六 
return iDays%7; 


WORD CCalendar::MonthDays(WORD iYear, WORD iMonth) 

switch(iMonth) 

case 1:case 3:case 5:case 7:case 8:case 10:case 12: 
return 31; 
break; 
case 4:case 6:case 9:case 11: 
return 30; 
break; 
case 2: 
//如果是闰年 
if(IsLeapYear(iYear)) 
return 29; 
else 
return 28; 
break; 

return 0; 


WORD CCalendar::GetLeapMonth(WORD iLunarYear) 

BYTE &flag = gLunarMonth[(iLunarYear - START_YEAR)/2]; 
  return  (iLunarYear - START_YEAR)%2 ? flag&0x0f : flag>>4; 


LONG CCalendar::LunarMonthDays(WORD iLunarYear, WORD iLunarMonth) 

if(iLunarYear < START_YEAR)
return 30L;

WORD height =0 ,low =29;
int iBit = 16 - iLunarMonth;

if(iLunarMonth > GetLeapMonth(iLunarYear) && GetLeapMonth(iLunarYe
 
ar)) 
   iBit --; 

if(gLunarMonthDay[iLunarYear - START_YEAR] & (1<<iBit))
low ++;

if(iLunarMonth == GetLeapMonth(iLunarYear))
if(gLunarMonthDay[iLunarYear - START_YEAR] & (1<< (iBit -1)))
height =30;
else
height =29;

return MAKELONG(low, height);
}

WORD CCalendar::LunarYearDays(WORD iLunarYear)
{
/*
WORD days=348 ; //12*29
int month = 12 ;
//如果iYear年有闰月,则为13个月
if(gLanarMonth[iYear - START_YEAR])
month ++;
//如果某月是三十天则days++
while(month >=0 && (gLanarMonthDay[iYear - START_YEAR] & (1 << (16 -

month))))
{
days ++;
month --;
}
return days;
*/
WORD days =0;
for(WORD i=1; i<=12; i++)
{
LONG tmp = LunarMonthDays(iLunarYear ,i);
days += HIWORD(tmp);
days += LOWORD(tmp);
}
return days;
}

void CCalendar::FormatLunarYear(WORD iYear, char *pBuffer)
{
char szText1[]="甲乙丙丁戊己庚辛壬癸";
char szText2[]="子丑寅卯辰巳午未申酉戌亥";
char szText3[]="鼠牛虎免龙蛇马羊猴鸡狗猪";

memcpy(pBuffer, szText1+((iYear-4)%10)*2,2);
memcpy(pBuffer+2,szText2+((iYear-4)%12)*2,2);
pBuffer[4]=' ';
memcpy(pBuffer+5,szText3+((iYear-4)%12)*2,2);
strcpy(pBuffer+7,"年");
}

void CCalendar::FormatMonth(WORD iMonth, char *pBuffer, BOOL bLunar)

{
if(!bLunar && iMonth==1)
{
strcpy(pBuffer, " 一月");
return;
}

char szText[]="正二三四五六七八九十";
if(iMonth<=10)
{
memcpy(pBuffer, " ", 2);
memcpy(pBuffer+2, szText + (iMonth -1)*2, 2);
strcpy(pBuffer+4 , "月");
return;
}
if (iMonth == 11)
strcpy(pBuffer, "十一");
else
strcpy(pBuffer, "十二");
strcpy(pBuffer+4 , "月");


}
void CCalendar::FormatLunarDay(WORD iDay, char *pBuffer)
{
char szText1[]="初十廿三";
char szText2[]="一二三四五六七八九十";
if(iDay != 20 && iDay !=30)
{
memcpy(pBuffer, szText1 + (iDay-1)/10*2 ,2);
memcpy(pBuffer+2, szText2 + ((iDay-1)%10)*2 ,2);
pBuffer[4]='\0';
}
else
{
memcpy(pBuffer, szText1 + iDay/10*2, 2);
strcpy(pBuffer+2, szText2 +18);
}
}
WORD CCalendar::l_CalcSelectDay(POINT * pt)
{
RECT rect;
GetClientRect(&rect);
WORD iRow = (pt->y - rect.top -26)/ROW_HEIGHT; 
WORD iCol = (pt->x - rect.left )/COL_WIDTH; 

WORD startcol ,endrow, endcol; 
startcol = WeekDay(m_iYear, m_iMonth, 1); 
endcol   = WeekDay(m_iYear, m_iMonth, MonthDays(m_iYear,m_iMonth)); 

endrow   = (MonthDays(m_iYear, m_iMonth) + startcol -1)/7 ; 
    if(iRow == 0 && iCol < startcol || iRow == endrow && iCol > endcol
 
 ||  iRow > endrow) 
return 0; 
return iRow *7 + iCol + 1 - startcol ; 


void CCalendar::OnLButtonDown(UINT nFlags, CPoint point)  

WORD day = l_CalcSelectDay(&point); 
if(day !=0 && day != m_iDay) 

m_iDay = day; 
::PostMessage(GetParent()->m_hWnd, UM_SELCHANGE, MAKELONG(m_iMonth,  
m_iYear), m_iDay);  
    } 
SetFocus();  
CWnd::OnLButtonDown(nFlags, point); 



void CCalendar::OnContextMenu(CWnd* pWnd, CPoint point)  

m_oPopMenu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, p 

oint.y, 
this);  


void CCalendar::OnTitleBkColor() 

  CColorDialog colordlg; 
  if(colordlg.DoModal() != IDOK) 
  return; 
  m_dwTitleBkColor = colordlg.GetColor(); 
  Invalidate();  


void CCalendar::OnTitleColor() 

CColorDialog colordlg; 
  if(colordlg.DoModal() != IDOK) 
  return; 
  m_dwTitleColor = colordlg.GetColor(); 
  Invalidate();  


void CCalendar::OnSelColor() 

  CColorDialog colordlg; 
  if(colordlg.DoModal() != IDOK) 
  return; 
   
  m_dwSelColor = colordlg.GetColor(); 
  Invalidate();  


void CCalendar::OnForeColor() 

CColorDialog colordlg; 
  if(colordlg.DoModal() != IDOK) 
  return; 
   
  m_dwForeColor = colordlg.GetColor(); 
  Invalidate();  


#undef COL_WIDTH 
#undef ROW_HEIGHT 
#undef TITLE_HEIGHT 
/*********************************************************************
 
********* 
  下面为阴历计算所需的数据,为节省存储空间,所以采用下面比较变态的存储方
 
法. 
    
**********************************************************************
 
*********/ 
//数组gLunarDay存入阴历1901年到2100年每年中的月天数信息, 
//阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表3
 
0天,否则为29天 
WORD gLunarMonthDay[]= 

//测试数据只有1901.1.1 --2050.12.31 
  0X4ae0, 0Xa570, 0X5268, 0Xd260, 0Xd950, 0X6aa8, 0X56a0, 0X9ad0, 0X4a
 
e8, 0X4ae0,   //1910 
  0Xa4d8, 0Xa4d0, 0Xd250, 0Xd548, 0Xb550, 0X56a0, 0X96d0, 0X95b0, 0X49
 
b8, 0X49b0,   //1920 
  0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada8, 0X2b60, 0X9570, 0X4978, 0X49
 
70, 0X64b0,   //1930 
  0Xd4a0, 0Xea50, 0X6d48, 0X5ad0, 0X2b60, 0X9370, 0X92e0, 0Xc968, 0Xc9
 
50, 0Xd4a0,   //1940 
  0Xda50, 0Xb550, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950, 0Xb4
 
a8, 0X6ca0,   //1950 
  0Xb550, 0X55a8, 0X4da0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa950, 0Xe950, 0X6a
 
a0, 0Xad50,   //1960 
  0Xab50, 0X4b60, 0Xa570, 0Xa570, 0X5260, 0Xe930, 0Xd950, 0X5aa8, 0X56
 
a0, 0X96d0,   //1970 
  0X4ae8, 0X4ad0, 0Xa4d0, 0Xd268, 0Xd250, 0Xd528, 0Xb540, 0Xb6a0, 0X96
 
d0, 0X95b0,   //1980 
  0X49b0, 0Xa4b8, 0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada0, 0Xab60, 0X93
 
70, 0X4978,   //1990 
  0X4970, 0X64b0, 0X6a50, 0Xea50, 0X6b28, 0X5ac0, 0Xab60, 0X9368, 0X92
 
e0, 0Xc960,   //2000 
  0Xd4a8, 0Xd4a0, 0Xda50, 0X5aa8, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc9
 
58, 0Xa950,   //2010 
  0Xb4a0, 0Xb550, 0Xb550, 0X55a8, 0X4ba0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa9
 
30, 0X74a8,   //2020 
  0X6aa0, 0Xad50, 0X4da8, 0X4b60, 0X9570, 0Xa4e0, 0Xd260, 0Xe930, 0Xd5
 
30, 0X5aa0,   //2030 
  0X6b50, 0X96d0, 0X4ae8, 0X4ad0, 0Xa4d0, 0Xd258, 0Xd250, 0Xd520, 0Xda
 
a0, 0Xb5a0,   //2040 
  0X56d0, 0X4ad8, 0X49b0, 0Xa4b8, 0Xa4b0, 0Xaa50, 0Xb528, 0X6d20, 0Xad
 
a0, 0X55b0,   //2050 
   
}; 

//数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节
 
存两年 
BYTE  gLunarMonth[]= 

0X00, 0X50, 0X04, 0X00, 0X20,   //1910 
0X60, 0X05, 0X00, 0X20, 0X70,   //1920 
0X05, 0X00, 0X40, 0X02, 0X06,   //1930 
0X00, 0X50, 0X03, 0X07, 0X00,   //1940 
0X60, 0X04, 0X00, 0X20, 0X70,   //1950 
0X05, 0X00, 0X30, 0X80, 0X06,   //1960 
0X00, 0X40, 0X03, 0X07, 0X00,   //1970 
0X50, 0X04, 0X08, 0X00, 0X60,   //1980 
0X04, 0X0a, 0X00, 0X60, 0X05,   //1990 
0X00, 0X30, 0X80, 0X05, 0X00,   //2000 
0X40, 0X02, 0X07, 0X00, 0X50,   //2010 
0X04, 0X09, 0X00, 0X60, 0X04,   //2020 
0X00, 0X20, 0X60, 0X05, 0X00,   //2030 
0X30, 0Xb0, 0X06, 0X00, 0X50,   //2040 
0X02, 0X07, 0X00, 0X50, 0X03    //2050 
}; 

//数组gLanarHoliDay存放每年的二十四节气对应的阳历日期 
//每年的二十四节气对应的阳历日期几乎固定,平均分布于十二个月中 
//   1月          2月         3月         4月         5月         6月 
 
   
//小寒 大寒   立春  雨水   惊蛰 春分   清明 谷雨   立夏 小满   芒种 夏
 
至 
//   7月          8月         9月         10月       11月        12月 
 
  
//小暑 大暑   立秋  处暑   白露 秋分   寒露 霜降   立冬 小雪   大雪 冬
 
至 

/*********************************************************************
 
************ 
 节气无任何确定规律,所以只好存表,要节省空间,所以.... 
  下面这种存法实在是太变态了,你就将就着看吧 
**********************************************************************
 
************/ 
//数据格式说明: 
//如1901年的节气为 
//  1月     2月     3月   4月    5月   6月   7月    8月   9月    10月 
 
 11月     12月 
// 6, 21, 4, 19,  6, 21, 5, 21, 6,22, 6,22, 8, 23, 8, 24, 8, 24, 8, 24
 
, 8, 23, 8, 22 
// 9, 6,  11,4,   9, 6,  10,6,  9,7,  9,7,  7, 8,  7, 9,  7,  9, 7,  9
 
, 7,  8, 7, 15 
//上面第一行数据为每月节气对应日期,15减去每月第一个节气,每月第二个节气
 
减去15得第二行 
// 这样每月两个节气对应数据都小于16,每月用一个字节存放,高位存放第一个节
 
气数据,低位存放 
//第二个节气的数据,可得下表 

BYTE gLunarHolDay[]= 

0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1901 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1902 
0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X7 

8,   //1903 
0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X8 

7,   //1904 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1905 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1906 
0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X7 

8,   //1907 
0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1908 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1909 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1910 
0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X7 

8,   //1911 
0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1912 
0X95, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1913 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1914 
0X96, 0XA5, 0X97, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X7 

8,   //1915 
0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1916 
0X95, 0XB4, 0X96, 0XA6, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X8 

7,   //1917 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1918 
0X96, 0XA5, 0X97, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X7 

8,   //1919 
0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1920 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X8 

7,   //1921 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1922 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X7 

8,   //1923 
0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1924 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X8 

7,   //1925 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1926 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1927 
0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1928 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1929 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1930 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1931 
0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1932 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1933 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1934 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1935 
0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1936 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1937 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1938 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1939 
0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1940 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1941 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1942 
0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1943 
0X96, 0XA5, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1944 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1945 
0X95, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X7 

7,   //1946 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1947 
0X96, 0XA5, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //1948 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X79, 0X78, 0X79, 0X77, 0X8 

7,   //1949 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X7 

7,   //1950 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X7 

8,   //1951 
0X96, 0XA5, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //1952 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1953 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X68, 0X78, 0X8 

7,   //1954 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1955 
0X96, 0XA5, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //1956 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1957 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1958 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1959 
0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1960 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1961 
0X96, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1962 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1963 
0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1964 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1965 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1966 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1967 
0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1968 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1969 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1970 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X7 

7,   //1971 
0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1972 
0XA5, 0XB5, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1973 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1974 
0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X7 

7,   //1975 
0X96, 0XA4, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X89, 0X88, 0X78, 0X87, 0X8 

7,   //1976 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //1977 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X8 

7,   //1978 
0X96, 0XB4, 0X96, 0XA6, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X7 

7,   //1979 
0X96, 0XA4, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1980 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X77, 0X8 

7,   //1981 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1982 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X7 

7,   //1983 
0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1984 
0XA5, 0XB4, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //1985 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1986 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X79, 0X78, 0X69, 0X78, 0X8 

7,   //1987 
0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //1988 
0XA5, 0XB4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1989 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //1990 
0X95, 0XB4, 0X96, 0XA5, 0X86, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1991 
0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //1992 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1993 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1994 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X76, 0X78, 0X69, 0X78, 0X8 

7,   //1995 
0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //1996 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //1997 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //1998 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //1999 
0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //2000 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2001 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //2002 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //2003 
0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //2004 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2005 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2006 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X8 

7,   //2007 
0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X8 

6,   //2008 
0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2009 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2010 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X8 

7,   //2011 
0X96, 0XB4, 0XA5, 0XB5, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X8 

6,   //2012 
0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2013 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2014 
0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //2015 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X8 

6,   //2016 
0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2017 
0XA5, 0XB4, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2018 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //2019 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X8 

6,   //2020 
0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //2021 
0XA5, 0XB4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2022 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X8 

7,   //2023 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X9 

6,   //2024 
0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //2025 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2026 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //2027 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X9 

6,   //2028 
0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //2029 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2030 
0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X8 

7,   //2031 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X9 

6,   //2032 
0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //2033 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X78, 0X88, 0X78, 0X87, 0X8 

7,   //2034 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2035 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X9 

6,   //2036 
0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

6,   //2037 
0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2038 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2039 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X9 

6,   //2040 
0XA5, 0XC3, 0XA5, 0XB5, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X8 

6,   //2041 
0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2042 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2043 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X88, 0X87, 0X9 

6,   //2044 
0XA5, 0XC3, 0XA5, 0XB4, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X8 

6,   //2045 
0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X8 

7,   //2046 
0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X8 

7,   //2047 
0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA5, 0X97, 0X87, 0X87, 0X88, 0X86, 0X9 

6,   //2048 
0XA4, 0XC3, 0XA5, 0XA5, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X8 

6,   //2049 
0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X78, 0X78, 0X87, 0X8 

7    //2050 

}; 




--
不是我不明白,计算机这玩意儿变化快

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.97.30.229]

[关闭][返回]