1.新建一个对话框的MFC工程;
2.将对话框的Border属性设置为None;这是为了对话框程序的可全屏显示,实现屏幕保护程序;
3.头文件添加类成员变量声明和函数声明:
   CPoint curpt;
int x;
int y;
int idirect;
int a;
int b;
void DrawBitmap(CDC &dc, int nIndexBit);
  4.在OnInitDialog函数中将屏幕设置大小,并对一些变量进行初始化,代码如下:
    BOOL CScrnSaverProductDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
ShowCursor(false);
CRect rc(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
::GetCursorPos(&curpt);
this->MoveWindow(rc);
SetTimer(1,500,NULL);
x=0;y=0;
a=0;b=0;
idirect=0;
return TRUE;
}
5.添加对WM_MOUSEMOVE消息的实现函数,实现移动鼠标关闭程序,代码如下:
  void CScrnSaverProductDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
int moveptx=point.x-curpt.x;
int movepty=point.y-curpt.y;
if(moveptx+movepty>3)
PostMessage(WM_CLOSE); 
CDialog::OnMouseMove(nFlags, point);
}
 6.在OnPaint函数中实现黑色背景的绘制,代码入下:
void CScrnSaverProductDlg::OnPaint() 
{   灰色代码处为注释部分
CPaintDC dc(this);
CBrush brush(RGB(0,0,0));
CRect rect;
GetClientRect(rect);
dc.FillRect(&rect,&brush);
}
 7.关闭窗口时关闭程序,代码入下:
void CScrnSaverProductDlg::PostNcDestroy()  //销毁窗口
{
KillTimer(1);
CDialog::PostNcDestroy();
}
 8.设置定时器,在定时器内通过自定义函数绘制图片,代码如下:
void CScrnSaverProductDlg::OnTimer(UINT nIDEvent) 
{
KillTimer(1);
CClientDC dc(this);
static nIndexBit=0;
if(nIndexBit>3)
nIndexBit=0;
DrawBitmap(dc, nIndexBit++);
SetTimer(1,500,NULL);
CDialog::OnTimer(nIDEvent);
}
 9.自定义DrawBitmap函数,实现位图的绘制,代码如下:
void CScrnSaverProductDlg::DrawBitmap(CDC &dc, int nIndexBit)
{
CDC dcmem;
dcmem.CreateCompatibleDC(&dc);
CBitmap m_Bitmap;
m_Bitmap.LoadBitmap(IDB_BITMAP1+nIndexBit);
dcmem.SelectObject(m_Bitmap);
BITMAP bmp;
GetObject(m_Bitmap,sizeof(bmp),&bmp);
int iscreenx=GetSystemMetrics(SM_CXSCREEN);
int iscreeny=GetSystemMetrics(SM_CYSCREEN);
if(a>iscreenx/2)a=0;
if(b>iscreeny/2)b=0;
if(idirect>1)idirect=0;
switch(idirect)
{
case 0:
for(x=bmp.bmWidth;x>0;x--)
{
dc.BitBlt(a,b,bmp.bmWidth,bmp.bmHeight,&dcmem,x,y,SRCCOPY);
}
break;
case 1:
for(y=bmp.bmHeight;y>0;y--)
{
dc.BitBlt(a,b,bmp.bmWidth,bmp.bmHeight,&dcmem,x,y,SRCCOPY);
}
break;
}
idirect++;
a+=60;
b+=20;
Sleep(2000);
dc.BitBlt(0,0,iscreenx,iscreeny,&dcmem,0,0,BLACKNESS);
dcmem.DeleteDC();
}
效果不方便添加,自己去实现吧。。。
补充:对了,忘记告诉大家怎样添加到系统里了,把Debug里的.exe程序后缀名改为.scr,并拷贝到Windows下的System32下,在桌面---属性---屏幕保护程序中就可以看到你自己的作品了

MFC中简易屏幕保护程序的实现相关推荐

  1. linux替换屏幕保护进程,有没有一个体面的方式来阻止linux中的屏幕保护程序?...

    我正在寻找一种体面的,不跛脚的方式来禁止xscreensaver,kscreensaver或gnome-screensaver,哪些可能正在运行,最好是以屏幕保护程序的方式,而且它绝对肯定必须执行得很 ...

  2. w7计算机屏幕保护设置在哪,Win7屏保怎么设置?Win7屏幕保护程序如何打开?

    Win7屏保怎么设置?Win7系统中的屏幕保护程序一般是从桌面右键进入的,但很多用户使用的是Win7家庭版系统,右键没有个性化设置,这种情况只能从控制面板中进入,至于如何设置屏幕保护,相信用户进入之后 ...

  3. c语言输出cad scr文件,屏幕保护程序文件scr关联被autocad修改为CAD脚本的恢复

    修改SCR文件的关联属性.因为在"我的电脑→工具→文件夹选项→文件类型"选项卡里找不到SCR文件类型,所以只能通过"注册表编辑器"来手动修改:首先定位到HKEY ...

  4. 询问HTG:白噪声屏幕保护程序,有效的文件命名以及从密码泄露中恢复

    Once a week we share three of the questions we've answered from the Ask HTG inbox with the greater r ...

  5. macOS Big Sur 11.3中添加了Hello新的屏幕保护程序

    macOS Big Sur 11.3包含一个隐藏的" Hello"屏幕保护程序,该屏幕保护程序似乎是为新iMac型号设计的,但也可以安装在任何运行11.3更新的Mac上. 正如9t ...

  6. flickr搜索_从提示框:DIY笔,将旧光盘回收到游戏中以及在Flickr中搜索Kindle屏幕保护程序...

    flickr搜索 This week we're taking a look at how to make your own stylus, turning your old CDs or DVDs ...

  7. 苹果在macOS Big Sur 11.3中添加了新的屏幕保护程序——“Hello”

    macOS Big Sur 11.3包含一个隐藏的" Hello"屏幕保护程序,该屏幕保护程序似乎是为新iMac型号设计的,但也可以安装在任何运行11.3更新的Mac上. 正如9t ...

  8. 如何停止屏幕保护程序?

    如何停止屏幕保护程序? <script type="text/javascript"> </script> <script src="htt ...

  9. html文件设置成mac屏保,Mac怎么设置屏幕保护?如何设置Mac屏幕保护程序?

    Mac电脑如何设置屏幕保护程序?屏保是我们显示个性的重要途径,也是保护我们的电脑安全的一个重要方法.MAC用户想要修改自己的屏保该怎么办呢?今天PC6小编就教大家如何在Mac系统下设置桌面背景以及屏幕 ...

最新文章

  1. 【Cocos2d-x】开发实战-Cocos中的字符串、标签和中文乱码
  2. 百度推出飓风算法,严厉打击恶劣采集
  3. Linux 操作系统原理 — cgroups 进程资源配额与管理
  4. #035 大数阶乘 PTA题目6-10 阶乘计算升级版 (20 分)
  5. hdu 3395(费用流,二分图的最大权匹配)
  6. xboxone硬盘坏的表现_【32期】硬盘损坏的根源居然是——它!
  7. python openstack rabbitmq_OpenStack--Rabbitmq组件消息队列
  8. 使用生成器创建新的迭代模式
  9. 分类树/装袋法/随机森林算法的R语言实现
  10. 基于display:table的CSS布局
  11. 安装工程造价课程设计_安装工程造价课程设计的图纸-上海装修报价
  12. python assert_Python中何时使用断言 assert
  13. ThinkPHP 漏洞利用工具
  14. Java程序员 面试如何介绍项目经验?
  15. roboware studio教程_2.2.RoboWare Studio安装及使用
  16. 微信开发之微信支付(商户平台提供的方式)
  17. [TF进阶] 卷积神经网络
  18. 女性社交电商系统:聚焦女用户 收割电商半壁江山
  19. 分析亚洲手机游戏市场现状--中国篇、韩国篇以及日本篇
  20. 怎么提取音乐中的伴奏?分享一个超好用的方法

热门文章

  1. 基于蚂蚁-遗传优化算法的路径规划问题(Matlab代码实现)
  2. python办公(1)python来代替sh
  3. 学习matplotlib.pyplot笔记,常用contourf
  4. 【CentOS7安装RabbitMQ及常用命令】
  5. JBoss Marshalling编解码
  6. CMD下文件copy命令
  7. 基于STM32的AD7699、(AD7689、AD7949、AD7682)芯片驱动
  8. 冒泡数组实现和冒泡数组的改进以及插入法排序
  9. 【XCP学习笔记】1 XCP协议初步
  10. NodeJS+Vue3+D3