




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实实 训训 报报 告告 桌面万年历设计与开发桌面万年历设计与开发 姓名姓名 专业名称 专业名称 数学专业 班班 级级 学学 号 号 信息科学与工程学院信息科学与工程学院 二零一三年十一月二零一三年十一月 信息科学与工程学院软件实践实训报告 2 目目 录录 1 1 概述概述 3 3 2 2 相关技术相关技术 3 3 2 12 1 win32win32 消息机制消息机制 3 3 2 22 2 WindowsWindows APIAPI 函数函数 3 3 2 32 3 WindowsWindows 对话框对话框 3 3 2 42 4 bmpbmp 图像处理技术图像处理技术 4 4 3 3 总体设计与详细设计总体设计与详细设计 4 4 3 13 1 系统模块划分系统模块划分 4 4 3 23 2 主要功能模块主要功能模块 4 4 4 4 编码实现编码实现 8 8 5 5 实训中遇到的主要问题及解决方法实训中遇到的主要问题及解决方法 3333 6 6 实训体会实训体会 3333 信息科学与工程学院软件实践实训报告 3 1 概述概述 本项目是桌面小时钟的实现 表盘上可以实现星期 年月日 时分秒 生肖以及天干 地支 右击可以打开延伸项目 包括进入日历 表盘风格 以及退出等选型 在日历表中 可以实现从 1901 2099 年公历农历 以及周几的查询 在日历表格中也可以进行换肤操作 本项目还有整点报时的功能 到整点会自动播放音乐报时 同时还有音乐 通过 音乐 停止 这两个按钮来实现对音乐开关的控制 2 相关技术相关技术 2 1 win32win32 消息机制消息机制 消息 就是指 Windows 发出的一个通知 告诉应用程序某个事情发生了 消息本身是 作为一个记录传递给应用程序的 这个记录 一般在 C Java 汇编中称为 结构体 中包 含了消息的类型以及其他信息 根据已给样本的提示 绘制了日历的矩形背景 并且也根 据公历日期来计算出农历日期 并且标注了一些重要节日 像 春节 元宵节 清明节 端午节 中秋节 等一些重要的节日 并且将节假日的字体颜色设置为蓝色 然后又写了 获取当前系统本机时间的函数 成功的获得了当前本机的时间 2 2 WindowsWindows APIAPI 函数函数 GetLocalTime 获得当前时间 公历 年 月 日 周 CreateCompatibleDC 申请内存空间 创建一个内存设备场景 MoveToEx 移动划线的起点 LoadImage 装载图标 光标 或位图 LineTo 绘制到某一点 SetTextColor 设置要绘制的文字颜色 RGB 设置 RGB 颜色 TextOut 绘制文字 SetBkMode 设置背景显示模式 wsprintf 整数转换为字符串 宽字符 用 Unicode 码 GetClientRect 获取窗口大小 GetDC 获取内存设备 SetTimer 设置定时器 FillRect 填充矩形 CreateSolidBrush 创建刷子 CreateFont 创建一种有特殊性的字体 SYSTEMTIME 描述时间类型 包括年月日 时分秒 周 结构体类型 2 3 WindowsWindows 对话框对话框 Windows 下的模式对话框和非模式对话框切换技术 非模式对话框的隐藏 对话框分为两类 模态的 和 非模态的 其中模态对话框最为普遍 当您的程序 显示一个模态对话框时 使用者不能在对话框与同一个程序中的另一个窗口之间进行切换 使用者必须主动结束该对话框 这由通过按一下 OK 或者 Cancel 键来完成 不过 在显示模态对话框时 使用者通常可以从目前的程序切换到另一个程序 而有些对话框 称为 系统模态 甚至连这样的切换程序操作也不允许 在 Windows 中 显示了系统模 信息科学与工程学院软件实践实训报告 4 态对话框之后 要完成其它任何工作 都必须先结束该对话框 2 4 bmpbmp 图像处理技术图像处理技术 BMP 是 bitmap 的缩写形式 bitmap 顾名思义就是位图也即 windows 位图 使用 bmp 图 像处理技术 以及屏蔽绘图机制 将两张相同的图片通过使用布尔型的 OR 或 操作符将 源和目标矩形区域的颜色合并 3 总体设计与详细设计总体设计与详细设计 3 1 系统模块划分系统模块划分 桌面万年历程序是典型的 Windows 界面程序 根据需求文档中要求的功能 以及 Windows 程序的特点 将系统分为三个子系统 主界面子系统 日历显示子系统 参数设 定子系统 这样设计简单易实现 其中 主界面子系统负责程序主界面的显示 程序主逻辑的控制 以及其他子系统的 调用 日历显示子系统负责万年历计算 显示 参数设定子系统负责皮肤等设定 下图是三个子系统之间的逻辑关系图 提供运行参数调用 提供运 行参数 主界面日历显示 调用 参数设置 3 2 主要功能模块主要功能模块 3 2 1 主界面子系统主界面子系统 主界面子系统负责程序主界面的显示 程序主逻辑的控制 以及其他子系统的调用 分为以下模块 程序入口模块 主界面消息处理模块 主界面贴图模块 时间处理模块 下图是模块之间的关系图 信息科学与工程学院软件实践实训报告 5 程序入口模块消息处理模块 界面贴图模块时间处理模块 注册消息处理模块 注册时间处理模块 调用界面贴图模块 调用界面贴图模块 其中 程序入口模块 是 Windows 程序的入口函数 在该模块内创建主界面 消息处 理模块负责响应用户的鼠标和键盘操作 时间处理模块负责时间运算和显示 界面贴图模 块负责主界面的图像显示 以下是各模块的详细说明 模块名称模块功能输入输出其他说明 程序入口模块在该模块内 创建主界面 Windows 调用 主界面创建 定时器安装 Windows 程序的 入口函数 消息处理模块负责响应用 户的鼠标和 键盘操作 用户和键 盘鼠标输 入 Windows 其他事件 消息处理Windows 程序的 窗口函数 时间处理模块负责时间运 算和显示 定时器间 隔 时间Windows 程序的 定时器回调函数 界面贴图模块负责主界面 的图像显示 位图位图显示无 3 2 2 日历显示子系统日历显示子系统 信息科学与工程学院软件实践实训报告 6 消息处理模块 日期处理及显示模块 注册消息处理模块 调用日历显示模块 其中 消息处理模块负责响应用户的鼠标和键盘操作 日期处理及显示模块负责万年 历时间的运算和显示 以下是各模块的详细说明 模块名称模块功能输入输出其他说明 消息处理模块负责响应用 户的鼠标和 键盘操作 用户和键 盘鼠标输 入 Windows 其他事件 消息处理Windows 程序的 窗口函数 日期处理及显示模 块 负责万年历 日期的运算 和显示 包 括农历 公 历 节气 节假日的显 示 定时器间 隔 日历界面模块 信息科学与工程学院软件实践实训报告 7 开始 日历显示 月是否有变化 是是 年是否有变化 日历变化 3 2 3 参数设定子系统参数设定子系统 参数设定子系统负责设定皮肤 整点报时 尺寸大小 闹铃和备忘录的设定 该子系 统是一个界面模块 其详细说明如下 模块名称模块功能输入输出其他说明 参数设定皮肤 整点 报时 用户点击参数界面模块 皮肤的更换 开始 是否更换皮肤 是 更换皮肤 结束 信息科学与工程学院软件实践实训报告 8 4 编码实现编码实现 include include include include include resource h include include pragma comment lib WinLib lib pragma comment lib WINMM LIB 导入声音用 void SetDlgMenuID UINT nMainDlgID UINT nCalendarDlgID UINT nMenuID void SetButtonID UINT nCalendarID UINT nExitID UINT nBiaoPan1 UINT nBiaoPan2 UINT nBiaoPan3 UINT nBiaoPan4 INT PTR ShowMainDlg HINSTANCE g hInst 保存操作系统传递进来的 应用程序实例句柄 Windows程序入口函数 int WINAPI WinMain HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR lpCmdLine int nShowCmd g hInst hInstance SetDlgMenuID IDD DLG CLOCK IDD DLG CALENDAR IDR MENU SetButtonID ID CALENDAR ID EXIT ID BIAO1 ID BIAO2 ID BIAO3 ID BIAO4 ShowMainDlg IDD DLG CLOCK SetLayeredWindowAttributes HDC hdc COLORREF crKey BYTE bAlpha DWORD dwFlags typedef struct stDateTime int nYear int nMonth int nDay stDateTime 定义表格 存储年 2099年的农历信息 每年的大小月 闰月信息 春节所在的公历日期 unsigned int LunarCalendarTable 199 0 x04AE53 0 x0A5748 0 x5526BD 0 x0D2650 0 x0D9544 0 x46AAB9 0 x056A4D 0 x09AD42 0 x24AEB6 0 x04 AE4A 1901 1910 0 x6A4DBE 0 x0A4D52 0 x0D2546 0 x5D52BA 0 x0B544E 0 x0D6A43 0 x296D37 0 x095B4B 0 x749BC1 0 x0 49754 1911 1920 0 x0A4B48 0 x5B25BC 0 x06A550 0 x06D445 0 x4ADAB8 0 x02B64D 0 x095742 0 x2497B7 0 x04974A 0 x664 B3E 1921 1930 0 x0D4A51 0 x0EA546 0 x56D4BA 0 x05AD4E 0 x02B644 0 x393738 0 x092E4B 0 x7C96BF 0 x0C9553 0 x0D 信息科学与工程学院软件实践实训报告 9 4A48 1931 1940 0 x6DA53B 0 x0B554F 0 x056A45 0 x4AADB9 0 x025D4D 0 x092D42 0 x2C95B6 0 x0A954A 0 x7B4ABD 0 x 06CA51 1941 1950 0 x0B5546 0 x555ABB 0 x04DA4E 0 x0A5B43 0 x352BB8 0 x052B4C 0 x8A953F 0 x0E9552 0 x06AA48 0 x6A D53C 1951 1960 0 x0AB54F 0 x04B645 0 x4A5739 0 x0A574D 0 x052642 0 x3E9335 0 x0D9549 0 x75AABE 0 x056A51 0 x096 D46 1961 1970 0 x54AEBB 0 x04AD4F 0 x0A4D43 0 x4D26B7 0 x0D254B 0 x8D52BF 0 x0B5452 0 x0B6A47 0 x696D3C 0 x0 95B50 1971 1980 0 x049B45 0 x4A4BB9 0 x0A4B4D 0 xAB25C2 0 x06A554 0 x06D449 0 x6ADA3D 0 x0AB651 0 x093746 0 x5 497BB 1981 1990 0 x04974F 0 x064B44 0 x36A537 0 x0EA54A 0 x86B2BF 0 x05AC53 0 x0AB647 0 x5936BC 0 x092E50 0 x0C9 645 1991 2000 0 x4D4AB8 0 x0D4A4C 0 x0DA541 0 x25AAB6 0 x056A49 0 x7AADBD 0 x025D52 0 x092D47 0 x5C95BA 0 x 0A954E 2001 2010 0 x0B4A43 0 x4B5537 0 x0AD54A 0 x955ABF 0 x04BA53 0 x0A5B48 0 x652BBC 0 x052B50 0 x0A9345 0 x47 4AB9 2011 2020 0 x06AA4C 0 x0AD541 0 x24DAB6 0 x04B64A 0 x69573D 0 x0A4E51 0 x0D2646 0 x5E933A 0 x0D534D 0 x0 5AA43 2021 2030 0 x36B537 0 x096D4B 0 xB4AEBF 0 x04AD53 0 x0A4D48 0 x6D25BC 0 x0D254F 0 x0D5244 0 x5DAA38 0 x0 B5A4C 2031 2040 0 x056D41 0 x24ADB6 0 x049B4A 0 x7A4BBE 0 x0A4B51 0 x0AA546 0 x5B52BA 0 x06D24E 0 x0ADA42 0 x 355B37 2041 2050 0 x09374B 0 x8497C1 0 x049753 0 x064B48 0 x66A53C 0 x0EA54F 0 x06B244 0 x4AB638 0 x0AAE4C 0 x092 E42 2051 2060 0 x3C9735 0 x0C9649 0 x7D4ABD 0 x0D4A51 0 x0DA545 0 x55AABA 0 x056A4E 0 x0A6D43 0 x452EB7 0 x0 52D4B 2061 2070 0 x8A95BF 0 x0A9553 0 x0B4A47 0 x6B553B 0 x0AD54F 0 x055A45 0 x4A5D38 0 x0A5B4C 0 x052B42 0 x3A 93B6 2071 2080 0 x069349 0 x7729BD 0 x06AA51 0 x0AD546 0 x54DABA 0 x04B64E 0 x0A5743 0 x452738 0 x0D264A 0 x8E 933E 2081 2090 0 x0D5252 0 x0DAA47 0 x66B53B 0 x056D4F 0 x04AE45 0 x4A4EB9 0 x0A4D4C 0 x0D1541 0 x2D92B5 2091 2099 char TianGanDizhi 60 甲子 乙丑 丙寅 丁卯 戊辰 已巳 庚午 辛未 壬申 癸酉 甲戌 乙亥 丙子 丁丑 戊寅 已卯 庚辰 辛巳 壬午 癸未 甲申 乙酉 丙戌 丁亥 戊子 已丑 庚寅 辛卯 壬辰 癸巳 甲午 乙未 丙申 丁酉 戊戌 已亥 庚子 辛丑 壬寅 癸卯 甲辰 乙巳 丙午 丁未 戊申 已酉 庚戌 辛亥 壬子 癸丑 甲寅 乙卯 丙辰 丁巳 戊午 已未 庚申 辛酉 壬戌 癸亥 信息科学与工程学院软件实践实训报告 10 char ChDayTable 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 char ChMonthTable 正 二 三 四 五 六 七 八 九 十 十一 腊 unsigned int MonthAdd 12 0 31 59 90 120 151 181 212 243 273 304 334 unsigned int nCurrentYear 0 button控制年 unsigned int nCurrentMonth 0 月 unsigned int nCurrentDay 0 日 UINT Total 0 自定义的变量 当月的总天数 UINT PreTotal 0 自定义的当月的前一月的总天数 UINT CurScan 0 button控制皮肤 UINT SONG 0 button控制音乐 TCHAR Hours 255 SYSTEMTIME BellTime UINT Inthour 0 判断某年是否为公历闰年 int IsLeapYear WORD iYear 学生需要修改此函数 已经修改 if iYear 100 0 else return 0 公历日期转农历日期的函数 void SunToLunar const stDateTime pSunDay stDateTime pLunarDay int i 0 int SunDiff 0 int SpringDiff 0 信息科学与工程学院软件实践实训报告 11 int nSpringYear pSunDay nYear int nSpringMonth 1 int nSpringDay 0 计算当前公历日离当年元旦的天数 SunDiff MonthAdd pSunDay nMonth 1 pSunDay nDay 1 if IsLeapYear pSunDay nYear 计算春节所在公历日离元旦的天数 通过查表 计算当年的春节所在的公历日期 if LunarCalendarTable pSunDay nYear 1901 else 若春节在公历月 SpringDiff LunarCalendarTable pSunDay nYear 1901 SunDiff和SpringDiff的差就是当前公历日离春节的天数 if SunDiff SpringDiff 公历日在春节后 int x SunDiff SpringDiff int bLunar LunarCalendarTable nSpringYear 1901 闰月月份 i 0 nSpringMonth 1 for int a LunarCalendarTable pSunDay nYear 1901 计算大小月 if a 0 a 29 else a 30 if xbLunar 信息科学与工程学院软件实践实训报告 12 else 公历日在春节前 int x SpringDiff SunDiff int nShift 0 int bLunar LunarCalendarTable nSpringYear 1901 闰月月份 i 0 nSpringYear 需要上一年的农历信息 nSpringMonth 12 从最后一个月开始计算 if bLunar 0 如果没有闰月 nShift 0 x100 else nShift 0 x80 for int a LunarCalendarTable nSpringYear 1901 计算大小月 if a 0 a 29 else a 30 if x a x a x break x x a i nSpringMonth nSpringDay x 1 if nSpringMonth0 nSpringMonth pLunarDay nYear nSpringYear pLunarDay nMonth nSpringMonth pLunarDay nDay nSpringDay 根据公历日期获得星期 信息科学与工程学院软件实践实训报告 13 int GetDayOfWeek const stDateTime pSunDay 根据泰勒公式 nWeek nYear1 2 nYear1 nYear2 nYear2 26 nMonth 1 nDay 1 int nWeek 0 int nYear1 pSunDay nYear 100 年的前两位数字 int nYear2 pSunDay nYear 100 年的后两位数字 int nDay pSunDay nDay 公立日 int nMonth pSunDay nMonth 公立月数 所求的月份如果是月或月 则应视为上一年的月或月 也就是公式中nMonth的取值范围是从到而不是从到 if nMonth 1 nMonth 2 nMonth 12 nMonth nYear1 pSunDay nYear 1 100 年的前两位数字 nYear2 pSunDay nYear 1 100 年的后两位数字 nWeek nYear1 4 2 nYear1 nYear2 nYear2 4 26 nMonth 1 10 nDay 1 if nWeek 0 nWeek nWeek 7 7 有问题吗 nWeek可能小于零 循环加 else nWeek nWeek 7 return nWeek 根据公立年得到农历干支年 char GetGanZhi int nYear int i nYear 1984 60 return TianGanDizhi i 日历绘制函数 学生自己实现该函数 void DrawCalendar HDC hDC int nWidth int nHeight 获得日历的背景色 stDateTime SunDay LunarDay 存储当时年月日 SYSTEMTIME DateTime 系统时间 SYSTEMTIME LocTime 信息科学与工程学院软件实践实训报告 14 TCHAR HTime 255 RECT rc rect HBRUSH hBrush HFONT hFont TCHAR RILI 255 日历的标题 TCHAR GraTime 255 表格日期 UINT xOrg 60 x起始坐标 UINT yOrg 60 y起始坐标 UINT xRight nWidth 48 X的右端不包括 UINT yBottom nHeight Y的底部 UINT i 0 biaoGe 0 日历表格用 TCHAR WeekDay 星期天 星期一 星期二 星期三 星期四 星期五 星期六 UINT Week 0 列数 UINT Hang 0 行数 TCHAR Str 255 Str1 255 Today 255 农历和公历年月字符 UINT week 0 UINT hangkuan 0 liekuan 0 UINT First 0 UINT xLeft 0 UINT yRigth 0 UINT ShengXiao 0 HBITMAP hBkmap HDC hdc 绘制日历的矩形背景 改变皮肤 大皮肤 switch CurScan case 0 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 12 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 信息科学与工程学院软件实践实训报告 15 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 1 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 13 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 2 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 14 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 3 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 15 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 4 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 16 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 5 信息科学与工程学院软件实践实训报告 16 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 17 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 6 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 18 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 7 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 19 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 8 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 20 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 9 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 21 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 信息科学与工程学院软件实践实训报告 17 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 10 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 22 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break case 11 hdc CreateCompatibleDC hDC 创建一个与指定设备兼容的内存设备上下文环境 DC hBkmap HBITMAP LoadImage g hInst image 背景 23 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE SelectObject hdc hBkmap 该函数选择一对象到指定的设备上下文环境中 该新对象替换先前的 相同类型的对象 BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 该函数对指定的源设备环境区域中的像素进 行位块 bit block 转换 以传送到目标设备环境 SetBkMode hDC TRANSPARENT break SelectObject hdc hBkmap BitBlt hDC 0 0 nWidth nHeight hdc 0 0 SRCCOPY 绘制日历的矩形背景 改变皮肤 小皮肤 hdc CreateCompatibleDC hDC switch nCurrentMonth 12 case 0 hBkmap HBITMAP LoadImage g hInst image 背景 0 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 1 hBkmap HBITMAP LoadImage g hInst image 背景 1 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE 信息科学与工程学院软件实践实训报告 18 break case 2 hBkmap HBITMAP LoadImage g hInst image 背景 2 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 3 hBkmap HBITMAP LoadImage g hInst image 背景 3 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 4 hBkmap HBITMAP LoadImage g hInst image 背景 4 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 5 hBkmap HBITMAP LoadImage g hInst image 背景 5 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 6 hBkmap HBITMAP LoadImage g hInst image 背景 6 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 7 hBkmap HBITMAP LoadImage g hInst image背景 7 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 8 hBkmap HBITMAP LoadImage g hInst image 背景 8 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 9 hBkmap HBITMAP LoadImage g hInst image 背景 9 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 10 hBkmap HBITMAP LoadImage g hInst 信息科学与工程学院软件实践实训报告 19 image 背景 10 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 11 hBkmap HBITMAP LoadImage g hInst image 背景 11 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break SelectObject hdc hBkmap BitBlt hDC 60 60 nWidth 108 nHeight 40 hdc 0 0 SRCCOPY switch SONG 12 case 0 break case 1 mciSendString stop image sound 1 mp3 0 NULL mciSendString play image sound 2 mp3 0 NULL break case 2 mciSendString stop image sound 2 mp3 0 NULL mciSendString play image sound 3 mp3 0 NULL break case 3 mciSendString stop image sound 3 mp3 0 NULL mciSendString play image sound 4 mp3 0 NULL break case 4 mciSendString stop image sound 4 mp3 0 NULL mciSendString play image sound 5 mp3 0 NULL break case 5 mciSendString stop image sound 5 mp3 0 NULL mciSendString play image sound 6 mp3 0 NULL break case 6 mciSendString stop image sound 6 mp3 0 NULL mciSendString play image sound 7 mp3 0 NULL break case 7 mciSendString stop image sound 7 mp3 0 NULL mciSendString play image sound 8 mp3 0 NULL break 信息科学与工程学院软件实践实训报告 20 case 8 mciSendString stop image sound 8 mp3 0 NULL mciSendString play image sound 9 mp3 0 NULL break case 9 mciSendString stop image sound 9 mp3 0 NULL mciSendString play image sound 10 mp3 0 NULL break case 10 mciSendString stop image sound 10 mp3 0 NULL mciSendString play image sound 11 mp3 0 NULL break case 11 mciSendString stop image sound 10 mp3 0 NULL mciSendString play image sound 11 mp3 0 NULL break 星期标题框 MoveToEx hDC xOrg yOrg 28 NULL LineTo hDC xRight yOrg 28 MoveToEx hDC xOrg yOrg NULL LineTo hDC xRight yOrg 行 biaoGe yBottom yOrg 20 只是日历的高度 biaoGe biaoGe 6 高度分为六块 hangkuan biaoGe for i 0 i 5 i 画五行 MoveToEx hDC xOrg yOrg 27 biaoGe i 1 NULL LineTo hDC xRight yOrg 27 biaoGe i 1 列 biaoGe xRight xOrg 只是日历的宽度 biaoGe biaoGe 7 要七列 liekuan biaoGe for i 0 i 6 i 画七列 MoveToEx hDC xOrg biaoGe i 1 yOrg NULL LineTo hDC xOrg biaoGe i 1 yBottom 信息科学与工程学院软件实践实训报告 21 绘制 星期 标题框内的文字 SetTextColor hDC RGB 255 0 0 TextOut hDC xOrg 12 yOrg 5 WeekDay 0 strlen WeekDay 0 星期日的字体颜色 SetTextColor hDC RGB 0 0 0 for i 1 i 6 i 星期一到五的字体颜色 TextOut hDC xOrg 12 biaoGe i yOrg 5 WeekDay i strlen WeekDay i SetTextColor hDC RGB 255 0 0 日历上星期六 年月日的字体颜色 TextOut hDC xOrg 12 biaoGe 6 yOrg 5 WeekDay 6 strlen WeekDay 6 以下代码是公历显示 if nCurrentYear 0 如果当前日期还没有被设定 GetLocalTime nCurrentYear DateTime wYear nCurrentMonth DateTime wMonth nCurrentDay DateTime wDay SunDay nYear nCurrentYear SunDay nMonth nCurrentMonth SunDay nDay nCurrentDay SunToLunar 得到农历 TextOut hDC 450 40 ChMonthTable LunarDay nMonth strlen ChMonthTable LunarDay nMonth 农历显示 TextOut hDC 480 40 月 strlen 月 SunDay nDay 1 wsprintf GraTime 4d年 2d月 2d日 nCurrentYear nCurrentMonth nCurrentDay 现在时间 TextOut hDC 50 40 GraTime strlen GraTime 公历显示 SetTextColor hDC RGB 106 90 205 字体颜色 GetLocalTime wsprintf HTime 2d 2d 2d LocTime wHour LocTime wMinute LocTime wSecond SetTextColor hDC RGB 106 90 205 日历上显示时间字体颜色 SetBkMode hDC 3 TextOut hDC 2 80 HTime 8 十二生肖图片 hdc CreateCompatibleDC hDC 信息科学与工程学院软件实践实训报告 22 switch nCurrentYear 4 12 case 0 hBkmap HBITMAP LoadImage g hInst image shengxiao 0 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 1 hBkmap HBITMAP LoadImage g hInst image shengxiao 1 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 2 hBkmap HBITMAP LoadImage g hInst image shengxiao 2 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 3 hBkmap HBITMAP LoadImage g hInst image shengxiao 3 bmp IMAGE BITMAP 0 0 LR LOADFROMFILE break case 4 hBkmap HBITMAP LoadImage g hInst image shengx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论