亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? calendar1.cpp

?? 是一個 帶陰歷的 幾時器
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// Calendar1.cpp : implementation file
//
/***************************************************************************
   致看到這些源代碼的兄弟:
       你好!
       這本來是我為一個商業PDA產品開發的日歷程序,最近移植于PC機上, 所以算法
   和數據部分是用純C++寫的,不涉及MFC,所有的代碼都是以短節省存儲空間為主要目
   的.
	   很高興你對這些代碼有興趣,你可以隨意復制和使用些代碼,唯一有一點小小的
   愿望:在你使用和復制給別人時,別忘注明這些代碼作者:-)。程序代碼也就罷了,后
   面的數據可是我辛辛苦苦從萬年歷上找出來輸進去的。
	   如果你有什么好的意見不妨Mail給我。

       wangfei@hanwang.com.cn
	   wangfei@engineer.com.cn
                                                                 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);
	m_dwHoldayBkcolor = RGB(230,230,230);

}

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)
	ON_COMMAND(ID_HOLCOLOR,    OnHolColor)
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(255,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("選中區顏色..."));
	m_oPopMenu.AppendMenu(MF_STRING, ID_HOLCOLOR,     _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, BYTE bSecondLeapMonth)
{
	 char text[3];
     sprintf(text, "%2d", iDay);

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

     if(iLunarYear <START_YEAR && iLunarDay == 29)
		 iLunarDay = 1, iLunarMonth++;
	 else if(iLunarDay<29)
		  iLunarDay++;
	 else
	 {
		 LONG days = LunarMonthDays(iLunarYear, iLunarMonth);
		 if(!HIWORD(days) && iLunarDay == LOWORD(days) 
			             || bSecondLeapMonth && iLunarDay == HIWORD(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;//, holday;

   WORD iLunarYear, iLunarMonth, iLunarDay;
   BYTE bSecondLeapMonth = l_CalcLunarDate(iLunarYear, iLunarMonth, iLunarDay, 
	                              CalcDateDiff(m_iYear, m_iMonth, 1));
   
   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;
		   // select icon
	       if(iLunarDay==1)
               imgdc.SelectObject(&m_oBitMapList[29+iLunarMonth]);
	      // else if(holday = l_GetLunarHolDay(m_iYear, m_iMonth, day))
          //     imgdc.SelectObject(&m_oBitMapList[41+holday]);
		   else
			   imgdc.SelectObject(&m_oBitMapList[iLunarDay-1]);

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

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 iEndDay,
		                    WORD  iStartYear, WORD iStartMonth, WORD iStartDay)
{
	WORD monthday[]={0, 31, 59 ,90, 120, 151, 181, 212, 243, 273, 304, 334}; 

	//計算兩個年份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;
}

BYTE  CCalendar::l_CalcLunarDate(WORD &iYear, WORD &iMonth ,WORD &iDay, LONG iSpanDays)
{
	//陽歷1901年2月19日為陰歷1901年正月初一

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看下载| 免费观看30秒视频久久| 亚洲电影第三页| 免费一级片91| 福利91精品一区二区三区| 色偷偷久久一区二区三区| 欧美一区二区三区在线| 久久久久国产一区二区三区四区 | 免费在线观看不卡| 国产成人一区在线| 色综合一个色综合| 日韩精品一区国产麻豆| 中文字幕在线观看不卡视频| 亚洲1区2区3区4区| 成人一区在线看| 欧美日韩一卡二卡三卡| 国产亚洲欧美中文| 亚洲 欧美综合在线网络| 国产精品亚洲视频| 91精品国产综合久久久蜜臀图片| 国产欧美综合色| 日韩精品久久理论片| 成人午夜av影视| 欧美成人精品福利| 一区二区三区成人| 国产不卡一区视频| 欧美精品在线观看一区二区| 国产精品欧美极品| 久久精品国产久精国产爱| 色婷婷av一区二区三区之一色屋| 久久只精品国产| 天天操天天综合网| av一本久道久久综合久久鬼色| 日韩视频在线观看一区二区| 亚洲人成精品久久久久| 国产一区二区三区视频在线播放| 欧美在线不卡一区| 国产精品久久一卡二卡| 国产一区二区三区在线看麻豆| 欧美日韩国产综合一区二区三区| 中文字幕一区二区5566日韩| 久久精品72免费观看| 欧美视频日韩视频在线观看| 日韩伦理电影网| 高清国产一区二区三区| 久久中文字幕电影| 蜜臀av一级做a爰片久久| 在线视频观看一区| 国产精品三级视频| 国产精品夜夜嗨| 精品国产乱码久久久久久图片| 亚洲国产三级在线| 91国产免费观看| 亚洲日本韩国一区| 97久久精品人人做人人爽50路| 久久久久国产精品麻豆| 国内精品免费**视频| 日韩欧美一区二区视频| 日本91福利区| 91麻豆精品国产91久久久久久久久| 亚洲激情校园春色| 色综合色综合色综合色综合色综合| 国产精品卡一卡二卡三| 成人激情小说网站| 亚洲国产精品ⅴa在线观看| 国产高清不卡二三区| 国产亚洲综合性久久久影院| 九九**精品视频免费播放| 欧美一级一区二区| 日韩中文字幕不卡| 欧美蜜桃一区二区三区| 亚洲成av人片一区二区| 欧美性受xxxx| 五月天中文字幕一区二区| 欧美日韩激情一区二区三区| 亚洲午夜激情网页| 欧美日韩国产精品成人| 图片区日韩欧美亚洲| 91麻豆精品国产91久久久更新时间 | 玖玖九九国产精品| 欧美xxxx在线观看| 国精产品一区一区三区mba视频 | 国产毛片精品视频| 国产性天天综合网| 成人激情免费视频| **欧美大码日韩| 欧美视频中文字幕| 国产91在线|亚洲| 国产精品美女视频| 一本色道亚洲精品aⅴ| 午夜久久久久久久久久一区二区| 欧美日韩国产片| 麻豆免费精品视频| 国产日韩欧美a| 色诱视频网站一区| 日韩综合在线视频| 国产色综合久久| 99精品热视频| 图片区日韩欧美亚洲| 久久综合久久综合九色| 99精品久久久久久| 亚洲高清在线视频| 久久这里只有精品首页| av色综合久久天堂av综合| 亚洲永久免费av| 日韩网站在线看片你懂的| 国产精品77777竹菊影视小说| 国产精品护士白丝一区av| 欧美三级中文字幕| 国内精品伊人久久久久影院对白| 中文字幕在线视频一区| 欧美日韩久久久久久| 激情小说欧美图片| 一区二区三区免费在线观看| 日韩欧美中文字幕公布| www.亚洲免费av| 日韩精品亚洲专区| 中文字幕一区二区三区不卡在线| 欧美色图激情小说| 国产福利视频一区二区三区| 一区二区三区鲁丝不卡| 久久综合久久99| 欧美影院一区二区| 国产成人综合在线播放| 亚洲男人天堂av网| 久久夜色精品国产噜噜av| 欧美亚洲愉拍一区二区| 国产精品乡下勾搭老头1| 亚洲成a人在线观看| 日本一区二区三区在线观看| 欧美精品欧美精品系列| 94色蜜桃网一区二区三区| 久久丁香综合五月国产三级网站| 亚洲视频你懂的| 久久久影院官网| 91精品蜜臀在线一区尤物| www.欧美日韩国产在线| 麻豆久久久久久久| 亚洲大片免费看| 亚洲男人的天堂在线观看| 精品成a人在线观看| 欧美乱熟臀69xxxxxx| 91啦中文在线观看| 国产精品一区在线观看乱码| 婷婷综合另类小说色区| 亚洲欧洲日产国码二区| 久久久久久久久伊人| 91精品国产色综合久久不卡蜜臀 | 一区二区三区四区视频精品免费| 26uuu国产日韩综合| 91精品国产免费| 在线免费观看不卡av| av中文字幕一区| 高清在线成人网| 国产在线播放一区三区四| 香蕉加勒比综合久久| 一区二区三区日韩精品| 国产精品久久久久久久久快鸭| 欧美精品一区二| 日韩三级视频在线观看| 欧美日韩国产bt| 欧美日韩一区二区电影| 91成人在线精品| 色婷婷综合五月| 99久久99久久免费精品蜜臀| 国产精品一区二区在线播放 | 日韩欧美色综合网站| 欧美日韩国产首页| 日本高清不卡视频| 91免费看片在线观看| 盗摄精品av一区二区三区| 国产成人午夜精品5599| 国产一区二区三区美女| 久久99热99| 久久精品国产99国产| 毛片av中文字幕一区二区| 奇米综合一区二区三区精品视频| 午夜精品福利视频网站| 亚洲成a人v欧美综合天堂下载| 亚洲成年人网站在线观看| 亚洲国产精品久久不卡毛片 | 亚洲日韩欧美一区二区在线| 国产亚洲美州欧州综合国| 久久久亚洲午夜电影| 日本一区二区三区在线不卡| 久久久久久久网| 国产精品久久久久影视| 国产精品白丝在线| 亚洲欧美日韩一区二区三区在线观看 | 伦理电影国产精品| 老鸭窝一区二区久久精品| 国产在线国偷精品产拍免费yy| 国产大片一区二区| 成人精品一区二区三区中文字幕| 成人av免费在线观看| 色综合久久久久| 91麻豆精品国产91| 久久久精品国产99久久精品芒果 | 色欲综合视频天天天| 欧美猛男超大videosgay|