📄 calender.cpp
字号:
#include<afxwin.h>
#include"calender.h"
int CCalender::m_cnDAY = 3; //WEDNESDAY
int CCalender::m_cnYEAR = 2003; //CURRENT YEAR
int CCalender::m_nUserYear = 2003;
COLORREF CCalender::m_crWindow = RGB(255,255,255);
COLORREF CCalender::m_crMonths = RGB(0 ,0 ,255);
COLORREF CCalender::m_crWeekdays = RGB(0 ,255,0 );
COLORREF CCalender::m_crDays = RGB(255,0 ,0 );
COLORREF CCalender::m_crToday = RGB(255,0 ,0 );
COLORREF CCalender::m_crTodaysBox = RGB(255,255,255);
//--------------------------------------------------------------------------
CCalender::CCalender()
{
m_nUserYear = m_cnYEAR;
}
//--------------------------------------------------------------------------
void CCalender::SetYear(int nYear=2003)
{
int nDiff = 0;
int nLeapYear = 0;
int i = 0;
m_nUserYear = nYear;
m_cnDAY = 3; //Wednesday 1st Jan 2003
if( m_cnYEAR > nYear )
{
nDiff = m_cnYEAR - nYear;
for( i=nYear; i<m_cnYEAR; i++ )
{
if( i%4 == 0 )
nLeapYear++;
}
nDiff += nLeapYear;
nDiff = nDiff % 7;
for( i=nDiff; i>=1; i-- )
{
m_cnDAY--;
if( m_cnDAY<0 )
m_cnDAY = 6;
}
}
else if( m_cnYEAR < nYear )
{
nDiff = nYear - m_cnYEAR;
for( i=m_cnYEAR; i<nYear; i++ )
{
if( i%4 == 0 )
nLeapYear++;
}
nDiff += nLeapYear;
nDiff = nDiff % 7;
for( i=nDiff; i>=1; i-- )
{
m_cnDAY++;
if( m_cnDAY >= 7 )
m_cnDAY = 0;
}
}
}
//--------------------------------------------------------------------------
int CCalender::GetYear()
{ return m_nUserYear; }
//--------------------------------------------------------------------------
void CCalender::ShowDay(CDC *d)
{
int nX = 5;
int nY = 50;
int i,j,k;
i = j = k = 0;
CString m_szDays[7];
m_szDays[0] = "Sun";
m_szDays[1] = "Mon";
m_szDays[2] = "Tue";
m_szDays[3] = "Wed";
m_szDays[4] = "Thu";
m_szDays[5] = "Fri";
m_szDays[6] = "Sat";
d->SetBkMode(TRANSPARENT);
d->SetTextColor(m_crDays);
for( i=0; i<4; i++ )
{
for( j=0; j<3; j++ )
{
for( k=0; k<7; k++ )
{
d->TextOut(nX,nY,m_szDays[k],3);
nX += 35;
}
nX += 23;
}
nX = 5;
nY += 185;
}
};
//--------------------------------------------------------------------------
void CCalender::ShowMonth(CDC *d)
{
CFont myfont;
myfont.CreateFont(20,10,0,0,0,0,0,0,0,0,0,0,0,"Arial");
d->SelectObject(&myfont);
d->SetBkMode(TRANSPARENT);
d->SetTextColor(m_crMonths);
d->TextOut(85 ,22 ,"January");
d->TextOut(352,22 ,"Febuary");
d->TextOut(632,22 ,"March");
d->TextOut(103,208,"April");
d->TextOut(370,208,"May");
d->TextOut(635,208,"June");
d->TextOut(103,392,"July");
d->TextOut(360,392,"August");
d->TextOut(615,392,"September");
d->TextOut(85 ,578,"Octuber");
d->TextOut(345,578,"November");
d->TextOut(615,578,"December");
}
//--------------------------------------------------------------------------
void CCalender::ShowCalender(CDC *d)
{
int i,j,k,count;
int x = 5;
int y = 82;
int CurDay;
int CurMonth;
int Month;
char str[3];
int m_nMonths[12];
CTime T = CTime::GetCurrentTime();
CurDay = T.GetDay();
CurMonth = T.GetMonth();
m_nMonths[0] = 31;
m_nMonths[1] = ( m_nUserYear%4 == 0 )? 29 : 28;
m_nMonths[2] = 31;
m_nMonths[3] = 30;
m_nMonths[4] = 31;
m_nMonths[5] = 30;
m_nMonths[6] = 31;
m_nMonths[7] = 31;
m_nMonths[8] = 30;
m_nMonths[9] = 31;
m_nMonths[10] = 30;
m_nMonths[11] = 31;
count = i = j = k = 0;
d->SetBkMode(TRANSPARENT);
Month=1;
for(j=0; j<4; j++ )
{
for( k=0; k<3; k++ )
{
if ( j==0 && k==0 ) { x = 5; y = 82; }
else if( j==0 && k==1 ) { x = 270; y = 82; }
else if( j==0 && k==2 ) { x = 540; y = 82; }
else if( j==1 && k==0 ) { x = 5; y = 265; }
else if( j==1 && k==1 ) { x = 270; y = 265; }
else if( j==1 && k==2 ) { x = 540; y = 265; }
else if( j==2 && k==0 ) { x = 5; y = 448; }
else if( j==2 && k==1 ) { x = 270; y = 448; }
else if( j==2 && k==2 ) { x = 540; y = 448; }
else if( j==3 && k==0 ) { x = 5; y = 631; }
else if( j==3 && k==1 ) { x = 270; y = 631; }
else if( j==3 && k==2 ) { x = 540; y = 631; }
x += m_cnDAY*35;
for( i=1; i<=m_nMonths[count]; i++ )
{
if( CurDay == i && CurMonth == Month )
{
d->SetTextColor( m_crToday );
sprintf(str,"%3d",i);
d->TextOut(x,y,str,strlen(str));
}
else
{
d->SetTextColor( (m_cnDAY==0)? m_crWeekdays : RGB(0,0,0));
sprintf(str,"%3d",i);
d->TextOut(x,y,str,strlen(str));
}
x+=35;
m_cnDAY++;
if( m_cnDAY>=7 )
{
m_cnDAY = 0;
if( k==0 ) x=5;
if( k==1 ) x=270;
if( k==2 ) x=540;
y+=20;
}
}
count++;
Month++;
}
}
}
//--------------------------------------------------------------------------
void CCalender::SetDaysColor(COLORREF crColor)
{ m_crDays = crColor; }
//--------------------------------------------------------------------------
void CCalender::SetMonthsColor(COLORREF crColor)
{ m_crMonths = crColor; }
//--------------------------------------------------------------------------
void CCalender::SetTodayColor(COLORREF crColor)
{ m_crToday = crColor; }
//--------------------------------------------------------------------------
void CCalender::SetTodaysBoxColor(COLORREF crColor)
{ m_crTodaysBox = crColor; }
//--------------------------------------------------------------------------
void CCalender::SetWindowColor(COLORREF crColor)
{ m_crWindow = crColor; }
//--------------------------------------------------------------------------
void CCalender::SetWeekdaysColor(COLORREF crColor)
{ m_crWeekdays = crColor; }
//--------------------------------------------------------------------------
COLORREF CCalender::GetDaysColor()
{ return m_crDays; }
//--------------------------------------------------------------------------
COLORREF CCalender::GetMonthsColor()
{ return m_crMonths; }
//--------------------------------------------------------------------------
COLORREF CCalender::GetTodayColor()
{ return m_crToday; }
//--------------------------------------------------------------------------
COLORREF CCalender::GetTodaysBoxColor()
{ return m_crTodaysBox; }
//--------------------------------------------------------------------------
COLORREF CCalender::GetWindowColor()
{ return m_crWindow; }
//--------------------------------------------------------------------------
COLORREF CCalender::GetWeekdaysColor()
{ return m_crWeekdays; }
//--------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -