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

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

?? calendarfrm.cpp

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

       wangfei@hanwang.com.cn
	   wangfei@engineer.com.cn
                                                                 2000年3月
****************************************************************************/
// CalendarFrm.cpp : implementation file
//

#include "stdafx.h"
#include "Calendar.h"
#include "CalendarFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW

#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



/////////////////////////////////////////////////////////////////////////////
// CCalendarFrm

CCalendarFrm::CCalendarFrm()
{
}

CCalendarFrm::~CCalendarFrm()
{
}


BEGIN_MESSAGE_MAP(CCalendarFrm, CWnd)
	//{{AFX_MSG_MAP(CCalendarFrm)
	ON_WM_PAINT()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
	ON_MESSAGE(UM_SELCHANGE, OnSelChange)
	ON_CBN_SELCHANGE(IDC_MONTHSELECT, OnMonthChange)
	ON_EN_CHANGE(IDC_YEAREDIT, OnYearChange)
	ON_BN_CLICKED(IDC_BUTTODAY, OnTodayClick)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCalendarFrm message handlers

BOOL CCalendarFrm::Create(RECT &rect, CWnd * pParentWnd, UINT nID)
{
	CString szClassName = AfxRegisterWndClass(CS_CLASSDC|CS_SAVEBITS|
		                                      CS_HREDRAW|CS_VREDRAW,
                                              0, 0, 0);

	rect.right = rect.left + 340;
    rect.bottom = rect.top +214;
	//WS_EX_CLIENTEDGE|WS_EX_WINDOWEDGE
	//|WS_DLGFRAME|WS_THICKFRAME
	if(!CWnd::CreateEx( 0, szClassName, _T(""),
		                WS_DLGFRAME|WS_CHILD|WS_VISIBLE|WS_TABSTOP, rect, 
						pParentWnd, nID, NULL)) 

		   return FALSE;

	UpdateWindow();
	l_CreateDispFont();
	for(int i=0; i<12; i++)
    	m_oBitmaplist[i].LoadBitmap(IDB_BITMAP43+i); 
	return TRUE;
}
#define STARTX  102
#define STARTY  155

void CCalendarFrm::l_PaintToday(CPaintDC &dc)
{
   SYSTEMTIME systime;
   ::GetSystemTime(&systime);
   CString str;
   str.Format("今天:%4d年%2d月%2d日", systime.wYear, systime.wMonth, systime.wDay);    
   dc.Draw3dRect(STARTX+1, STARTY, 228, 22, RGB(128,128,128), RGB(255,255,255));
   dc.SetBkColor(::GetSysColor(4)); 
   dc.TextOut(STARTX+4, STARTY+4, str);
}
#undef  STARTY
#undef  STARTX

void CCalendarFrm::l_PaintBorder(CPaintDC &dc)
{
	CRect rect;
	GetClientRect(&rect);
	/*rect.left ++;
	rect.top ++;
	dc.FrameRect(&rect, &CBrush(RGB(255,255,255))); 
	rect -= CPoint(1,1);
    dc.FrameRect(&rect, &CBrush(RGB(128,128,128))); 
    */
#define LINEY  179
	rect.SetRect(rect.left+1, LINEY, rect.right+1, LINEY +2); 
	dc.Draw3dRect(&rect, RGB(128, 128, 128), RGB(255,255,255)); 

#define LINEX  96
	rect.SetRect(LINEX, 1,  LINEX+2, LINEY+2); 
    dc.Draw3dRect(&rect, RGB(128, 128, 128), RGB(255,255,255)); 
#undef  LINEX
#undef  LINEY

}

#define DISP_X  15
#define DISP_Y  60

void CCalendarFrm::l_PaintChineseInfo(CPaintDC &dc)
{
	WORD iYear , iMonth, iDay;

	WORD iHolDay = CCalendar::GetLunarDate(m_oCalendar.GetYear(), 
		                                   m_oCalendar.GetMonth(),
	                                       m_oCalendar.GetDay(), 
										   iYear, iMonth, iDay); 
	char text[18];
	CCalendar::FormatLunarYear(iYear, text); 
	dc.SetBkColor(::GetSysColor(4));
	dc.TextOut(DISP_X, DISP_Y, text); 

	CDC imgdc;
    imgdc.CreateCompatibleDC(&dc);
	imgdc.SelectObject(&m_oBitmaplist[(iYear-4)%12]);
	CRect rect(DISP_X+38, DISP_Y-4, DISP_X+38+34, DISP_Y-4+24);
	dc.FillRect(&rect, &CBrush(dc.GetBkColor()));
	dc.BitBlt(DISP_X+38, DISP_Y-4, 34,24, &imgdc,0,0,SRCAND);

	CCalendar::FormatMonth(iMonth, text);
	dc.TextOut(DISP_X+23, DISP_Y+30, text);
	CCalendar::FormatLunarDay(iDay, text);
	dc.TextOut(DISP_X+39, DISP_Y+50, text);
  
    extern const char *HolText[];
	if(iHolDay)
	{
	   strcpy(text,"今日 ");
	   strcat(text, HolText[iHolDay-1]);
	   dc.TextOut(DISP_X, DISP_Y+80, text); 
	}
	else
	   dc.TextOut(DISP_X, DISP_Y+80, "         "); 
    
	
}
void CCalendarFrm::OnSelChange(LONG iYearMonth, LONG iDay)
{
  //OnPaint();
  InvalidateRect(CRect(DISP_X, DISP_Y, DISP_X+80, DISP_Y+100)); 
}
#undef DISP_X
#undef DISP_Y

void CCalendarFrm::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	dc.SelectObject(GetDispFont());
	l_PaintBorder(dc);
	l_PaintChineseInfo(dc);
	l_PaintToday(dc);

}

int CCalendarFrm::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	
	if (CWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

    //create calendar
	CRect rect;
	GetClientRect(&rect);
	rect.left = rect.CenterPoint().x - 64;
	rect.top  += 2; 
    if(!m_oCalendar.Create(rect, this, IDC_CALENDAR))
		return -1;

#define LEFT_X   2
#define TOP_Y    2
#define WIDTH    90
#define HEIGHT   22
	//create select year spingbutton and buddy
	rect.SetRect(LEFT_X, TOP_Y, LEFT_X+WIDTH, TOP_Y+HEIGHT);
	if(!m_oYearEdit.Create(rect, this, IDC_YEAREDIT))
		return -1;   
    m_oYearEdit.SetLimitText(4);  

	rect.SetRect(79, 3, 98, 23);
    if(!m_oYearSelect.Create(UDS_NOTHOUSANDS|WS_CHILD|WS_TABSTOP|
		                     WS_VISIBLE|UDS_SETBUDDYINT|UDS_ALIGNRIGHT, 
							 rect, this, IDC_YEARSELECT))
		return -1;
    m_oYearSelect.SetBuddy(&m_oYearEdit); 
    m_oYearSelect.SetRange(START_YEAR, END_YEAR);
	m_oYearSelect.SetPos(m_oCalendar.GetYear());
    
	//create select month combobox	
	rect.SetRect(LEFT_X, TOP_Y+HEIGHT+ 2, LEFT_X + WIDTH, TOP_Y+ 8*HEIGHT + 2); 
	if(!m_oMonthSelect.Create(WS_VSCROLL|CBS_DROPDOWNLIST|WS_CHILD|
		                      WS_VISIBLE|WS_TABSTOP, 
		                                    rect, this, IDC_MONTHSELECT))
		return -1;
#undef LEFT_X
#undef TOP_Y	
#undef WIDTH 
#undef HEIGHT
	//create today button
	rect.SetRect(255, 184, 328, 206);
	if(!m_obutToday.Create("今天", WS_CHILD|WS_VISIBLE|WS_TABSTOP, rect, this, IDC_BUTTODAY))
			return -1; 
   
	char text[10];
	for(int i=0; i<12; i++)
	{  
		CCalendar::FormatMonth(i+1, text, FALSE); 
		m_oMonthSelect.AddString(text); 
	}
	m_oMonthSelect.SetCurSel(m_oCalendar.GetMonth()-1);  
    
	return 0;
	
}




void CCalendarFrm::OnMonthChange()
{
	WORD iYear, iDay, iMonth;
	m_oCalendar.GetDate(iYear, iMonth, iDay); 
	iMonth = m_oMonthSelect.GetCurSel()+1;
	 
	if(iMonth != m_oCalendar.GetMonth())
	{
		if(iDay > CCalendar::MonthDays(iYear, iMonth))
			iDay = CCalendar::MonthDays(iYear, iMonth); 
		m_oCalendar.SetDate(iYear, iMonth, iDay); 
		Invalidate(); 
	}

}
void CCalendarFrm::OnYearChange()
{
	
	CString text;
	m_oYearEdit.GetWindowText(text); 
	if(text.GetLength()<4)
		return;

	WORD iYear, iMonth, iDay;
	m_oCalendar.GetDate(iYear, iMonth, iDay);
	iYear = m_oYearSelect.GetPos();
	
	if(iYear != m_oCalendar.GetYear())
	{
		if(iDay > CCalendar::MonthDays(iYear, iMonth))
			iDay = CCalendar::MonthDays(iYear, iMonth); 
		m_oCalendar.SetDate(iYear, iMonth, iDay); 
		text.Format("%4d", iYear);
		m_oYearEdit.SetWindowText(text); 
		Invalidate(); 
	}
	
}

void CCalendarFrm::OnTodayClick()
{
   WORD iYear, iMonth, iDay;
    SYSTEMTIME systime;
	::GetSystemTime(&systime);

	iYear  = systime.wYear;
	iMonth = systime.wMonth;
	iDay   = systime.wDay;
    if(iYear != m_oCalendar.GetYear() || iMonth != m_oCalendar.GetMonth()
		                              || iDay  !=  m_oCalendar.GetDay())
	{
		SetDate(iYear, iMonth, iDay);
		m_oYearSelect.SetPos(iYear);
		m_oMonthSelect.SetCurSel(iMonth -1); 
		Invalidate(); 
	}
}
void CCalendarFrm::l_CreateDispFont()
{
	static LOGFONT logFont;
	memset(&logFont, 0 ,sizeof(logFont));

	logFont.lfHeight         = 16;
	logFont.lfWeight         = FW_NORMAL;
	logFont.lfWidth          = 0;
	logFont.lfCharSet        = GB2312_CHARSET;
	logFont.lfOutPrecision   = OUT_DEFAULT_PRECIS;
	logFont.lfClipPrecision  = CLIP_DEFAULT_PRECIS;
	logFont.lfQuality        = PROOF_QUALITY;
	logFont.lfPitchAndFamily = VARIABLE_PITCH|FF_ROMAN;  
    strcpy(logFont.lfFaceName, "Disp Font"); 

	m_oDispFont.CreateFontIndirect(&logFont); 
	SetFont(&m_oDispFont, FALSE);
}

/////////////////////////////////////////////////////////////////////////////
// CYearEdit
CYearEdit::CYearEdit()
{
}

CYearEdit::~CYearEdit()
{
}


BEGIN_MESSAGE_MAP(CYearEdit, CEdit)
	//{{AFX_MSG_MAP(CYearEdit)
	ON_WM_CHAR()
	ON_WM_KILLFOCUS()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CYearEdit message handlers

BOOL CYearEdit::Create(const RECT& rect, CWnd* pParentWnd, UINT nID) 
{
	return CWnd::CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, 
		                        WS_CHILD|WS_VISIBLE, rect, pParentWnd, nID);
}

void CYearEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if(nChar < '0' || nChar > '9')
		return;
    CEdit::OnChar(nChar, nRepCnt, nFlags);
}

void CYearEdit::OnKillFocus(CWnd* pNewWnd) 
{
	char syear[6];
	GetWindowText(syear, 5);
    long iyear = atol(syear);

	if(iyear < START_YEAR)
	{
		sprintf(syear, "%4d", START_YEAR);
	    SetWindowText(syear);
	}
	else if(iyear > END_YEAR)
	{
		sprintf(syear, "%4d", END_YEAR);
	    SetWindowText(syear);
	}
	CEdit::OnKillFocus(pNewWnd);
}

const char *HolText[] ={"小寒", "大寒", "立春", "雨水",
		              "驚蟄", "春分", "清明", "谷雨",
					  "立夏", "小滿", "芒種", "夏至",
                      "小暑", "大暑", "立秋", "處暑",
					  "白露", "秋分", "寒露", "霜降",
					  "立冬", "小雪", "大雪", "冬至"};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级精品在线| 成人午夜激情在线| 夜夜揉揉日日人人青青一国产精品| 精品福利一二区| 日韩午夜中文字幕| 欧美一区二区三区在线看 | 精品国产伦一区二区三区免费| 在线观看日韩高清av| 欧美三级乱人伦电影| 欧美日韩高清在线| 日韩国产高清在线| 亚洲成人tv网| 在线观看91视频| 欧美日韩亚洲丝袜制服| 欧美精品乱码久久久久久按摩| 日韩女优av电影在线观看| 日韩欧美久久久| 亚洲第一成人在线| 国产丶欧美丶日本不卡视频| 欧美日韩国产乱码电影| 欧美精品精品一区| 国产精一区二区三区| 丁香一区二区三区| 色久优优欧美色久优优| 日韩一区二区三区四区五区六区| 成人综合婷婷国产精品久久免费| av男人天堂一区| 欧美成人三级在线| 亚洲韩国一区二区三区| 日韩欧美国产三级电影视频| 亚洲欧美日韩一区二区三区在线观看| 亚欧色一区w666天堂| 成人在线视频一区二区| 久久影院电视剧免费观看| 日韩精品电影在线观看| 在线观看视频欧美| 国产精品麻豆视频| 国产美女精品一区二区三区| 精品国产一区二区国模嫣然| 日韩1区2区日韩1区2区| 日韩一区二区三区在线视频| 亚洲精品中文在线| 久久综合久久综合亚洲| 国产成人免费av在线| 日本精品裸体写真集在线观看| 精品国产亚洲一区二区三区在线观看 | 在线观看国产一区二区| 不卡在线视频中文字幕| 正在播放一区二区| 亚洲人123区| 精品亚洲国内自在自线福利| 欧美日韩高清在线| 中文字幕一区二区日韩精品绯色| 麻豆国产精品777777在线| 日本高清不卡视频| 日韩午夜在线播放| 欧美亚洲高清一区| 日韩精品一级中文字幕精品视频免费观看| 欧美性色黄大片手机版| 国产美女av一区二区三区| 伊人婷婷欧美激情| 3d动漫精品啪啪1区2区免费| 国产激情一区二区三区桃花岛亚洲| 久久久久久久久久久久久女国产乱 | 亚洲精品在线观| 精品一区二区三区在线视频| 综合激情成人伊人| 在线电影国产精品| 色婷婷国产精品| 国产精品一色哟哟哟| 亚洲同性同志一二三专区| 精品粉嫩超白一线天av| 欧美性受极品xxxx喷水| 不卡一区中文字幕| 精品一区二区三区久久久| 日韩成人午夜电影| 亚洲成人av中文| 亚洲免费伊人电影| 日韩欧美美女一区二区三区| 久久久久久久国产精品影院| 在线视频一区二区免费| 亚洲国产一区二区三区青草影视| 91丨porny丨在线| 国产黄人亚洲片| 国产大陆精品国产| 久久伊人中文字幕| 91麻豆.com| 中文字幕在线一区| 日本免费在线视频不卡一不卡二| 91黄色激情网站| 亚洲va中文字幕| 精品国产百合女同互慰| 国产91丝袜在线播放九色| 国产精品二区一区二区aⅴ污介绍| 99国产精品久| 天堂av在线一区| 亚洲国产精品久久久久婷婷884| 最新高清无码专区| 亚洲18影院在线观看| 国产91精品一区二区麻豆亚洲| 欧美电视剧免费全集观看| 欧美一区二区福利视频| 91精品国产手机| 国产精品国产三级国产普通话99 | 日韩毛片高清在线播放| 成人免费看黄yyy456| 亚洲一二三四在线观看| 国产精品美女www爽爽爽| 91麻豆精品国产91久久久资源速度| 东方aⅴ免费观看久久av| 亚洲已满18点击进入久久| 喷白浆一区二区| 欧美日韩国产精品自在自线| 亚洲自拍偷拍av| 亚洲一区在线观看免费观看电影高清| 91福利国产成人精品照片| 激情久久久久久久久久久久久久久久| 亚洲色图清纯唯美| 国产视频视频一区| 欧美白人最猛性xxxxx69交| 欧美综合亚洲图片综合区| aaa亚洲精品| jizz一区二区| 狠狠色丁香婷综合久久| 日韩美女视频在线| 成人午夜在线免费| 国产盗摄女厕一区二区三区| 麻豆91在线播放免费| 麻豆精品视频在线| 蜜桃视频在线观看一区二区| 日韩有码一区二区三区| 午夜不卡av免费| 蜜桃一区二区三区在线| 国产一区久久久| 99国产精品99久久久久久| 日本久久一区二区| 欧美日韩国产一级片| 精品福利一二区| 亚洲婷婷在线视频| 婷婷激情综合网| 国产精品中文字幕日韩精品 | 在线亚洲高清视频| 欧美一区二区三区免费视频| 26uuu亚洲综合色欧美| 中文字幕欧美一| 免费观看在线综合| 91麻豆国产福利精品| 欧美日韩亚洲综合一区| 久久夜色精品一区| 亚洲午夜激情网站| 99re这里只有精品6| 日韩精品一区二区三区四区 | 在线观看日产精品| 国产精品三级在线观看| 精品少妇一区二区三区视频免付费 | 国产精品色哟哟网站| 国产精品电影一区二区三区| 欧美一区二区三区在线观看| 成人精品高清在线| 国产东北露脸精品视频| 高清视频一区二区| 成人黄色大片在线观看| 国产精品91xxx| 成人深夜在线观看| 色综合视频一区二区三区高清| www.亚洲免费av| 99热国产精品| 欧美三级欧美一级| 日韩久久免费av| 国产视频一区不卡| 一区二区三区中文字幕电影| 婷婷久久综合九色国产成人| 激情欧美日韩一区二区| 成人精品一区二区三区中文字幕 | 国产精品毛片无遮挡高清| 中文字幕一区日韩精品欧美| 亚洲精品ww久久久久久p站| 日本中文字幕一区二区有限公司| 美女网站在线免费欧美精品| 国产成人精品亚洲午夜麻豆| 91福利在线观看| 欧美大片在线观看一区二区| 国产精品视频一二| 香蕉乱码成人久久天堂爱免费| 久久99蜜桃精品| 91视频观看免费| 欧美一级高清大全免费观看| 国产精品三级av在线播放| 亚洲午夜免费视频| 国产乱国产乱300精品| 欧美日韩在线综合| 中文字幕乱码久久午夜不卡| 丝袜亚洲另类丝袜在线| 成人国产免费视频| 欧美一区午夜精品| 一区二区三区中文字幕精品精品| 国产伦精品一区二区三区免费迷| 在线观看亚洲一区| 国产精品理伦片| 国产一区二区三区视频在线播放|