资源简介
本程序设计的是一个飘雪的屏幕保护程序,当系统检测到一段时间内没有鼠标和键盘消息输入(即空闲了一段时间,此长度可以设置)时,程序便会运行,屏幕不再是一个静止的画面,而是在屏幕上飘起了雪白的雪花。当然,在屏保运行期间可以设置雪花的颜色,而一旦有鼠标左键的击键命令或是特定键盘击键命令,可以让屏保程序关闭,从而恢复屏保前的正常状态。
代码片段和文件信息
#include
#include
#include
#define ID_TIME 1
LRESULT CALLBACK WndProc(
HWND hwnd
UINT uMsg
WPARAM wParam
LPARAM lParam
);
class SNOW //雪花类
{
public:
void InitiateSnow(); //初始化雪花
void TimerSnow(); //雪花随时钟而改变
void DrawSnow(HDC hdc);
private:
POINT pos; //雪花位置
int r; //雪花增值半径
int xSpeed; //水平移动速度
int ySpeed; //竖直移动速度
};
void SNOW::InitiateSnow()
{
int iScreenWidthiScreenHeight;
iScreenWidth=GetSystemMetrics(SM_CXSCREEN);
iScreenHeight=GetSystemMetrics(SM_CYSCREEN);
//初始化雪花的坐标、增值半径、水平和垂直移动速度
pos.x=rand() % iScreenWidth;
pos.y=rand() % iScreenHeight;
r=rand() % 10 + 1;
xSpeed=rand() % 3 - 1;
ySpeed=rand() % 5 + 1;
}
void SNOW::TimerSnow()
{
int iScreenWidthiScreenHeight;
iScreenWidth =GetSystemMetrics(SM_CXSCREEN);
iScreenHeight=GetSystemMetrics(SM_CYSCREEN);
RECT rect;
pos.x += xSpeed;
pos.y += ySpeed;
SetRect(&rect00iScreenWidthiScreenHeight);
if(!PtInRect(&rectpos))
{
pos.x = rand() % iScreenWidth;
pos.y = rand() % (iScreenHeight / 3);
}
}
void SNOW::DrawSnow(HDC hdc)
{
Ellipse(hdcpos.xpos.ypos.x+rpos.y+r);
}
class WndClass //窗口类
{
public:
void DesignClass(HINSTANCE); //设计窗口类
void SetClassName(TCHAR str[]); //得到窗口类名
WNDCLASS GetWNDCLASS(); //返回窗口类结构
private:
TCHAR szAppName[20];
WNDCLASS wc; //窗口类结构
};
void WndClass::SetClassName(TCHAR str[])
{
strcpy(szAppNamestr);
}
void WndClass::DesignClass(HINSTANCE hInstance)
{
//窗口类风格
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockobject(WHITE_BRUSH);
wc.hCursor=LoadCursor(NULLIDC_ARROW);
wc.hIcon=LoadIcon(NULLIDI_APPLICATION);
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName=szAppName;
wc.lpszMenuName=NULL;
wc.style=CS_HREDRAW|CS_VREDRAW;
}
WNDCLASS WndClass::GetWNDCLASS()
{
return wc;
}
int WINAPI WinMain(HINSTANCE hInstance
HINSTANCE hPrevInstance
LPSTR lpCmdLine
int nShowCmd)
{
TCHAR szAppName[]=TEXT(“Snow“);
int iScreenWidthiScreenHeight;
iScreenWidth=GetSystemMetrics(SM_CXSCREEN);
iScreenHeight=GetSystemMetrics(SM_CYSCREEN);
WndClass wndclass;
wndclass.SetClassName(szAppName);
wndclass.DesignClass(hInstance);
//注册窗口类
if(!RegisterClass(&wndclass.GetWNDCLASS()))
{
MessageBox(NULLTEXT(“RegisterClass Error“)TEXT(“Error“)0);
return 0;
}
HWND hwnd;
MSG msg;
//创建窗口
hwnd=CreateWindow(szAppNameTEXT(“Snow“)
WS_OVERLAPPEDWINDOW
00iScreenWidthiScreenHeight
NULLNULLhInstanceNULL);
//显示及更新
ShowWindow(hwndSW_SHOWNORMAL);
UpdateWindow(hwnd);
//消息循环
while(GetMessage(&msgNULL00))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
class WindowProc //基于回调函数消息响应类
{
public:
void static OnCreate(HWND hwnd);
void static OnTimer(HWND hwnd);
void static OnLButtonDown(HWND hwnd);
void static onkeydown(HWND hwndWPARAM wParam)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 267776 2014-08-30 14:22 屏幕保护程序设计报告.doc
文件 176198 2011-07-12 10:32 屏幕保护程序设计程序\Debug\SnowScreenSaver.exe
文件 217688 2011-07-14 13:25 屏幕保护程序设计程序\Debug\SnowScreenSaver.ilk
文件 26903 2011-07-14 13:25 屏幕保护程序设计程序\Debug\SnowScreenSaver.obj
文件 3601724 2011-07-14 13:25 屏幕保护程序设计程序\Debug\SnowScreenSaver.pch
文件 467968 2011-07-14 13:25 屏幕保护程序设计程序\Debug\SnowScreenSaver.pdb
文件 176208 2011-07-14 13:25 屏幕保护程序设计程序\Debug\SnowScreenSaver.scr
文件 156672 2011-07-14 13:25 屏幕保护程序设计程序\Debug\vc60.idb
文件 86016 2011-07-14 13:25 屏幕保护程序设计程序\Debug\vc60.pdb
文件 6625 2011-07-14 13:25 屏幕保护程序设计程序\SnowScreenSaver.cpp
文件 4098 2011-07-12 12:07 屏幕保护程序设计程序\SnowScreenSaver.dsp
文件 538 2011-07-12 10:15 屏幕保护程序设计程序\SnowScreenSaver.dsw
文件 50176 2011-07-14 13:25 屏幕保护程序设计程序\SnowScreenSaver.ncb
文件 48640 2011-07-14 13:25 屏幕保护程序设计程序\SnowScreenSaver.opt
文件 1237 2011-07-14 13:25 屏幕保护程序设计程序\SnowScreenSaver.plg
目录 0 2012-03-07 20:28 屏幕保护程序设计程序\Debug
目录 0 2012-03-07 20:28 屏幕保护程序设计程序
----------- --------- ---------- ----- ----
5288467 17
评论
共有 条评论