一.
综述
考虑到雪花将会很多,并且每个雪花都有自己的行为路径,统一处理比较麻烦,因此自定义一个类CSnowflake,它所呈现的主要接口有两个:下落和“死亡”判断。下落路径由雪花对象自身处理,主框架中只是采用定时器来控制其下落。当然,雪花落到屏幕底后就相当于“死亡”了,为了保持活动雪花总数大致不变,我又开启了一个定时器,用来产生雪花。在用户交互上我做了一个托盘,可以显示提示,右键弹出菜单。还有一个小问题——程序运行之后即隐藏界面,自己试了许多方法,也在网上差了许多,最后还是在消息WM_WINDOWPOSCHANGING响应中添加lpwndpos->flags&=SWP_HIDEWINDOW并且去掉MFC生成的代码这个方法来的彻底。
二. 程序显示
1. 雪花
2. 托盘
主要描述其下落方法。
考虑到雪花将会很多,并且每个雪花都有自己的行为路径,统一处理比较麻烦,因此自定义一个类CSnowflake,它所呈现的主要接口有两个:下落和“死亡”判断。下落路径由雪花对象自身处理,主框架中只是采用定时器来控制其下落。当然,雪花落到屏幕底后就相当于“死亡”了,为了保持活动雪花总数大致不变,我又开启了一个定时器,用来产生雪花。在用户交互上我做了一个托盘,可以显示提示,右键弹出菜单。还有一个小问题——程序运行之后即隐藏界面,自己试了许多方法,也在网上差了许多,最后还是在消息WM_WINDOWPOSCHANGING响应中添加lpwndpos->flags&=SWP_HIDEWINDOW并且去掉MFC生成的代码这个方法来的彻底。
二. 程序显示
1. 雪花
2. 托盘
主要描述其下落方法。
BOOL CSnowflake::Down()
{
if (bDie)
return FALSE;
CRect rtNewLocation;
srand((UINT)time(NULL));//随机种子
if (rand()%2)
rtNewLocation.left=rtLoca

本文介绍了一个利用MFC框架编写的桌面下雪程序。程序中包含一个std::vector<CSnowflake>变量,存储活动的雪花对象。当雪花'死亡'时,它们会被从向量中移除,堆积在屏幕任务栏。为了处理多个定时器访问该向量可能产生的冲突,采用了同步事件m_handleEvent进行同步。此外,程序还实现了右键菜单功能。
最低0.47元/天 解锁文章
2982

被折叠的 条评论
为什么被折叠?



