亚洲欧美第一页_禁久久精品乱码_粉嫩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);

}

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(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("選中區顏色..."));
		
	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);

     // 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)
	 {
		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.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(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;
   WORD iLunarYear, iLunarMonth, iLunarDay;
   BYTE bSecondLeapMonth = l_CalcLunarDate(iLunarYear, iLunarMonth, iLunarDay, 
	                              CalcDateDiff(m_iYear, m_iMonth, 1));
   //GetLunarDate(m_iYear, m_iMonth, 1, iLunarYear, iLunarMonth, iLunarDay); 

   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, 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年正月初一
	//陽歷1901年1月1日到2月19日共有49天
	BYTE rcode =0;
   	if(iSpanDays <49)
	{
		iYear  = START_YEAR-1;
		if(iSpanDays <19)
		{ 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线综合亚洲欧美在线视频| 国产午夜精品福利| 亚洲精品一二三| av高清久久久| 欧美tickle裸体挠脚心vk| 久久精工是国产品牌吗| 精品视频一区二区不卡| 亚洲日本中文字幕区| 欧美国产精品劲爆| 亚洲精品一二三| 日本精品裸体写真集在线观看| 日本不卡一二三区黄网| 亚洲男人的天堂在线观看| 国产区在线观看成人精品| 91在线看国产| 日韩电影在线观看电影| 日韩免费看的电影| 色综合天天狠狠| 日日夜夜免费精品视频| 久久婷婷国产综合精品青草| 国产成人午夜视频| 亚洲国产人成综合网站| 久久欧美中文字幕| 日本韩国欧美一区二区三区| 美日韩一区二区| 亚洲视频图片小说| 欧美电影免费观看高清完整版在线 | 成人国产精品免费网站| 亚洲综合区在线| 欧美videofree性高清杂交| av综合在线播放| 午夜精品视频一区| 中文字幕精品—区二区四季| 欧美三级欧美一级| 风间由美一区二区av101| 亚洲超丰满肉感bbw| 日韩视频免费观看高清在线视频| 成人国产精品免费| 国产精品自拍一区| 日韩av一区二区在线影视| 国产精品视频第一区| 欧美精品第1页| 欧美主播一区二区三区美女| 国产成人免费视| 国产69精品久久99不卡| 蜜臀国产一区二区三区在线播放 | 欧美电视剧在线看免费| 日韩欧美综合一区| 亚洲精品在线观| 久久精品亚洲精品国产欧美kt∨| 国产日韩综合av| 国产精品国产三级国产aⅴ中文| 国产精品久久久久久久久快鸭| 中文字幕免费一区| 国产精品久久久久久久久久免费看 | 色综合天天性综合| 99久久综合国产精品| 99热在这里有精品免费| av亚洲精华国产精华精华| 99r精品视频| 色欧美乱欧美15图片| 欧美日韩不卡一区| 精品国产免费一区二区三区四区| 精品国产一区二区精华| 国产精品久久久久久久裸模| 亚洲一区二区四区蜜桃| 美国欧美日韩国产在线播放 | 成人欧美一区二区三区视频网页| 亚洲色图一区二区三区| 日韩黄色免费电影| 国产suv精品一区二区6| 一本到一区二区三区| 欧美一二三四区在线| 中文字幕一区二| 麻豆高清免费国产一区| 91麻豆免费看| 国产亚洲精久久久久久| 亚洲综合丝袜美腿| 国产在线播精品第三| 欧美性色欧美a在线播放| 精品美女被调教视频大全网站| 欧美激情在线观看视频免费| 亚洲国产精品一区二区www| 国产精品77777竹菊影视小说| 欧美在线三级电影| 中文字幕一区三区| 国产成人综合亚洲网站| 欧美不卡一区二区三区| 亚洲一二三级电影| 99久久99久久精品免费看蜜桃 | 日韩精品一区二| 亚洲不卡在线观看| 在线国产电影不卡| 亚洲欧美另类久久久精品2019| 国产一区激情在线| 欧美一级二级三级乱码| 日本女优在线视频一区二区| 欧美日韩精品欧美日韩精品一| 亚洲嫩草精品久久| 欧美午夜电影网| 亚洲国产精品久久久男人的天堂| 欧美亚洲免费在线一区| 亚洲高清免费观看高清完整版在线观看 | 日本一区二区三级电影在线观看 | 亚洲黄色免费网站| 欧美色电影在线| 男男成人高潮片免费网站| 精品黑人一区二区三区久久| 国产精品91xxx| 一区二区三区四区高清精品免费观看| 91视频在线观看免费| 午夜视频在线观看一区| 日韩精品中文字幕在线一区| 国产精品影视在线观看| 亚洲天堂精品在线观看| 91精品国产综合久久婷婷香蕉| 久草精品在线观看| 亚洲美女屁股眼交| 精品动漫一区二区三区在线观看| 91 com成人网| 成人深夜在线观看| 亚洲第一电影网| 国产精品网曝门| 日韩一区二区电影在线| 91亚洲精华国产精华精华液| 日本欧美肥老太交大片| 亚洲欧美日韩在线| 久久影音资源网| 欧美电影影音先锋| 成人免费黄色大片| 日日摸夜夜添夜夜添国产精品| 国产区在线观看成人精品 | 国产精品国产三级国产a| 日韩一区二区精品葵司在线| 99国产精品国产精品毛片| 国产美女精品在线| 精品午夜久久福利影院| 日韩国产精品久久久| 亚洲影院免费观看| 亚洲欧美成aⅴ人在线观看| 久久久国产一区二区三区四区小说| 欧美日韩aaaaaa| 欧美高清www午色夜在线视频| 色综合久久久网| 欧美午夜一区二区三区| 欧美影院午夜播放| 日本韩国欧美一区二区三区| 91免费国产在线| 99精品久久免费看蜜臀剧情介绍| 丁香桃色午夜亚洲一区二区三区| 韩国精品主播一区二区在线观看| 毛片不卡一区二区| 国产麻豆精品在线| 国产a视频精品免费观看| 成人教育av在线| 成人综合日日夜夜| 99久久精品一区| 欧美伊人久久久久久久久影院| 欧美性色黄大片| 制服丝袜av成人在线看| 2021中文字幕一区亚洲| 国产喷白浆一区二区三区| 国产精品高潮久久久久无| 亚洲色图视频免费播放| 五月综合激情婷婷六月色窝| 国产成人av电影在线| 91麻豆国产福利在线观看| 欧美亚洲国产bt| 精品国产百合女同互慰| 亚洲图片自拍偷拍| 欧美夫妻性生活| 中文字幕在线一区免费| 三级不卡在线观看| 色综合一个色综合亚洲| 久久久久九九视频| 日韩电影在线一区二区三区| 国产不卡免费视频| 日韩精品一区二区三区swag | 欧美卡1卡2卡| 7777精品伊人久久久大香线蕉经典版下载 | 人人精品人人爱| 色999日韩国产欧美一区二区| 久久久蜜桃精品| 奇米777欧美一区二区| 91麻豆免费在线观看| 欧美国产精品久久| 成人一区二区三区视频| 欧美一区三区二区| 亚洲成人av福利| 欧美三级日韩三级| 亚洲国产另类av| 欧美色综合网站| 亚洲伊人色欲综合网| 一本久久a久久免费精品不卡| 中文字幕一区二区三区在线播放| 国产麻豆91精品| 久久久久久久久久久久久久久99 | 五月婷婷综合网| 日韩欧美激情一区| 国产一区二区在线视频|