简单的WIN32屏保开发制作(可播放视频)

黑客帝国屏保源码!快拿去试试吧!炫酷无比! 黑客帝国屏幕保护设置 1. 打开VS2013或以上版本,新建—>项目,Visual C++,win32,选择win32控制台应用程序,名称填写为"hacker"。 2. 将以下代码复制到项目源文件中 黑客帝国屏保源码 3.编译项目工程 4.找到生成的exe文件,将exe后缀改为scr(hacker.exe->hacker.scr) 5.将文件h... 阅读详情

本文不同于VC下使用ScrnSave.lib进行屏保制作的方式,

而是在VS下以其内在原理,从无到有进行一个简单的WIN32屏保开发,

只要你拥有一些简单的WIN32程序编写的经验,便可以很轻松的明白并编写出此类屏保。


首先,要实现一个屏保,我们需要实现三件事。

  • 操作系统自动运行程序
  • 全屏幕的窗口
  • 用户输入即退出
只要实现了这三件事,那么便可以称之为简单意义上的屏保了。


操作系统自动运行程序:

       这很幸运,因为只要将用户程序的后缀名改为.scr, 将其放到正确的系统目录下,便可以成为

真正的屏幕保护程序,在空闲时自动得到操作系统的调用,而不用我们花大量时间编写代码。


全屏幕的窗口:

        这个也很简单,只要我们将窗口创建为全屏显示,那么自然也没有太大问题了。

你可以这样做:

    hwnd = CreateWindow(L"BeyondScrnSaver", NULL,                                             //注意这里初始化HWND_DESKTOP,
            WS_POPUP | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 0,   //因为在窗口上播放视频,窗口显示太快会看到先显示背景,所以我先将其大小调整为0
            0, HWND_DESKTOP, NULL, hInstance, NULL);

用户输入即退出:

        只要在消息窗口过程中进行鼠标移动,点击,以及键盘输入事件的处理,便可以实现该退出过程。


好了,讲了这么多,现在我们从实现一个屏幕保护程序的窗口框架开始吧....

/*---------------------------------------------------------------------------------
【Cpp文件】:ScreenMain.cpp          Created by Beyond Ray,2014年4月
(描述):使用天下叁CG《墨龙纪》制作成简单的屏保
-----------------------------------------------------------------------------------*/

//------------------------【头文件】--------------------------------
#include 
#include 								//使用swprintf_s函数所需的头文件
#include "resource.h"							//资源文件(只用于图标)

//------------------------【全局函数声明】--------------------------
LRESULT CALLBACK	WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);			//主窗口过程函数

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	HWND hwndFrameWnd = 0;
	HWND hwnd = 0;
	RECT rect;

	//---------------------------【设计一个窗口类】------------------------------
	WNDCLASSEX wndClass = { 0 };					//用WINDCLASSEX定义一个窗口类,并初始化
	wndClass.cbSize = sizeof(WNDCLASSEX);			//设置结构体的字节数大小
	wndClass.style = CS_HREDRAW | CS_VREDRAW;		//设置窗口的样式
	wndClass.lpfnWndProc = WndProc;					//设置指向窗口过程函数的指针
	wndClass.cbClsExtra = 0;						//窗口类的附加内存,取0就可以了
	wndClass.cbWndExtra = 0;						//窗口的附加内存,依然取0就行了
	wndClass.hInstance = hInstance;					//指定包含窗口过程的程序的实例句柄。
	wndClass.hIcon = (HICON)LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));    //本地加载自定义ico图标
	wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); //指定窗口类的光标句柄。
	wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);  //指定一个白色画刷句柄	
	wndClass.lpszMenuName = NULL;					//用一个以空终止的字符串,指定菜单资源的名字。
	wndClass.lpszClassName = L"BeyondScrnSaver";	//用一个以空终止的字符串,指定窗口类的名字。
	
	//----------------------------【注册一个窗口类】------------------------------
	if (!RegisterClassEx(&wndClass))
		return -1;

	//-----------------------------【创建一个窗口】-------------------------------
	hwnd = CreateWindow(L"BeyondScrnSaver", NULL,					//注意这里初始化HWND_DESKTOP,并且在最初大小为0,
			WS_POPUP | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 0, //以防止视频还没播放前看到白屏
			0, HWND_DESKTOP, NULL, hInstance, NULL);
			
	//窗口更新显示
	MoveWindow(hwnd, 0, 0, GetSystemMetrics(SM
使用 WPF 开发一个 Windows 屏幕保护程序 最近有小伙伴问我如何可以让 Windows 静置一段时间不操作之后,显示一个特殊的界面。我想了想,屏幕保护程序可以做到这一点,而且,屏幕保护程序的开发也是非常简单的。 本文将介绍如何为 Windows 这一悠久的功能进行开发。 本文内容屏幕保护程序的本质安装屏幕保护程序处理屏幕保护程序参数请预防一些坑参考资料 屏幕保护程序的本质 屏幕保护程序本质上就是一个 Win32 窗口应用程序。 好了,这一... 阅读详情

相关推荐

1024visualstudio美化壁纸

原图来自B站官方壁纸娘目前原图链接已被删 这是本人自己ps后的

minigui学习笔记一

三.窗口和消息 1.窗口系统(基于事件驱动和树层次) (桌面窗口/根窗口) ---------- 占满整个桌面,没有父窗口 桌面 疑问:桌面窗口是编程需要用户编,还是就是HWND_DESKTOP 框架窗口 框架窗口 ---------- 分为客户区和非客户区 子窗口 子窗口 2.窗口和屏幕绘制区的关系 3.消息队列 每创建一个窗口其托管窗口为桌面的话,就会创建一个消息队列 但文档上说:1.创建的第一个主窗口的托管窗口必须是桌面,其...

qq_43601873的博客 1332

win32纯代码编写的视频播放

利用win32纯代码编写的一个视频播放器,可播放AVI、WMV类型的视频,对于其他类型视频需要使用解码器,上传资源里有解码器Xvid

minigui[基础篇][2]——窗口和消息之窗口

minigui手册基础学习

qq_43601873的博客 1173

c语言windows界面函数,一个简单的C语言图形化界面

#pragma comment(linker,"/SUBSYSTEM:Windows /ENTRY:mainCRTStartup")#include /* 使类名成为全局变量 */TCHAR szClassName[ ] = TEXT("WindowsApp");/* 这个函数由Windows内部函数DispatchMessage()调用 */LRESULT CALLBACK WindowPro...

weixin_42212965的博客 1222

【转载】【一】VS个性化背景界面设置,自己也该有享受代码的权利。

首先,声明站在出处。本人新手一枚,无意之间发现这篇文章所以就花了一下午做了一个

.NET 学习工作日志 5306

win32 屏保开发

<br />需要使用的静态库:scrnsave.lib;<br /> 需要包含的头文件:scrnsave.h<br /> 需要实现的三个函数:<br />(1)屏保的消息处理函数<br /> LRESULT WINAPI ScreenSaverProc(HWND,UINT,WPARAM,LPARAM);<br />(2)屏保配置对话框<br /> BOOL WINAPI ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM);<br />(3)登记屏幕

kinghzking的专栏 2385

黑客帝国屏保源码

黑客帝国屏幕保护设置 1. 打开VS2010或以上版本,新建—>项目,Visual C++,win32,选择win32控制台应用程序,名称填写为"hacker"。 2. 将一下代码复制到项目源文件中 黑客帝国屏保源码 //数字流星雨 作者:Wicrecend #include "stdafx.h" #include <windows.h> #defin...

weixin_34112030的博客 160

[转]用汇编编写屏幕保护程序

  屏幕保护程序是什么,相信大家都用过,但对于它的结构也许就不那么熟悉了。屏幕保护程序是一种特使的 .exe 文件,实际上它是一个标准的 PE 文件,除了有扩展名 .scr,当然这个扩展名也是用连接程序产生的 .exe 文件改名得到的。但在编程中,屏幕保护程序又有它的特殊的地方,说穿了就是它的编程规范。屏幕保护程序有以下特点:屏幕保护程序是Win32 API 支持一种特殊的应用程序并由系统自动激活

hoverlees的专栏 746

Python爬取精美图片并自动设置成壁纸

  哈喽,大家好呀,这里是滑稽研究所。我们将教大家如何使用python爬取喜欢的壁纸,并且把它设置成我们的电脑桌面。(每隔一段时间自动更换壁纸。)   首先明确思路我们需要爬虫的知识来爬取我们喜欢的照片,其次我们需要用到python修改电脑背景的知识,最后我们希望隔一段时间背景可以自动更换。   我们需要用到BeautifulSoup、requests、win32、os和time库。大家记得提前安装一下。老样子缺少哪个库在cmd中pip即可。   源代码: from bs4 import Beautiful

weixin_45067072的博客 982

如何用树莓派搭建一台永久运行的个人服务器?

来源| 彭小呆,链接 |segmentfault.com/a/1190000021143144No.1树莓派是什么?Raspberry Pi(中文名为树莓派,简写为 RPi,(或者 Ra...

Python数据之道 8984

Input Leap完整指南:三步实现跨设备无缝控制

你是否经常需要在多台电脑之间切换?办公桌上摆着Windows台式机、MacBook笔记本和Linux工作站,每台设备都配有自己的键盘鼠标,桌面凌乱不堪,工作效率大打折扣。这正是Input Leap要解决的痛点——这款开源KVM软件让你只需一套键盘鼠标,就能在Windows、macOS、Linux等不同操作系统间自由切换,就像操作一台电脑那么简单。 ## 🖥️ 场景化引入:多设备办公的烦恼 想

gitblog_00714的博客 622

OpenAI押注医疗:开发者如何用大模型API实现医疗文本脱敏

大模型在垂直行业的落地,医疗是最具挑战也最有价值的场景之一。医疗数据的高敏感性、格式多样性和合规要求,让模型推理能力与工程化能力缺一不可。从医疗文本脱敏、病历结构化到诊断编码推荐,大模型API正被逐步引入临床辅助与流程自动化。然而,真实场景中的医疗数据往往涉及患者隐私、跨系统异构格式以及严格的审计追溯要求。开发者需要掌握数据脱敏、结构化输出、评测闭环等方法,才能让模型在医疗场景中安全稳定地运行。本文从医疗AI的特殊性出发,讲解医疗数据标准与合规红线,并以一个基于OpenAI兼容API的医疗文本脱敏最小示例,

weixin_30715523的博客 505

Lively Wallpaper排障指南:9个打不开、黑屏、高CPU常见问题一步修复

Lively Wallpaper是一款基于WinUI 3的开源动态壁纸软件,可以把视频、网页、小游戏变成桌面壁纸和屏幕保护程序。本文专治它"打不开、显示不对、表现异常、控制不了"四类毛病,覆盖9个最常见故障,按"30秒分诊"组织——先对照速查表找到自己的症状,再跳转对应小节照做,全程大约5分钟。 你能在30秒内判断自己的问题属于哪一类吗?下面这张表就是答案。 ## 30秒自检:你的症状属于哪一

gitblog_01163的博客 696

C语言API编写窗体界面和按钮

最近有个程序需要用对话框的方式实现,但前面都是通过黑框形式完成的,突然让增加一个界面,本来准备采用MFC完成的,后采用API函数.主要是通过调用Windows API界面的CreateWindows函数完成,同时也能创建按钮,把参数设置为button,如果想响应该按钮,只需在回调函数中增加消息WM_COMMAND判断即可.该文章主要是怀念自己大一的学习生活,希望文章对大家有所帮助.

杨秀璋的专栏 1万+

使用Win32 SDK开发屏幕保护程序

暮鼓集    行走集 1.引言 屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长。但随着技术的进步,新型的CRT显示器及液晶显示器已经无须这样做了,不过屏幕保护程序并未消失,因为其绚丽的画面成了人们彰显个性的方式。 现在,逼真的水族箱,浩瀚的太空以及更吸引眼球的屏幕保护程序不段被开发出来。 如果你有兴趣...

暮鼓集 2531

获取桌面窗口句柄

GetDesktopWindow获取的是顶层显示桌面句柄,也就是说,如果应用程序窗口在桌面上,那么它的窗口也算是所获取的窗口的一部分,如果使用GetDC(NULL)作图,则永远是在最顶层。 那么如何获取包含桌面图标的窗口句柄呢? 我们可以用Spy++来查看。 可以看出窗口层次为Progman->SHELLDLL_DefView->SysListView32。于是我们可以这样来获取我们

mkdym的专栏 2万+

MiniGUI源码分析--hellowworld(2):主窗口诞生的秘密

上一篇:MiniGUI源码分析--hellowworld(1) :MiniGUIMain中有什么奥秘 上一篇讲到MiniGUI程序的启动过程。当MiniGUI完成了初始化之后,就可以创建一个主窗口。(主窗口是唯一可以作为根窗口的窗口对象。这可能是MiniGUI在当初设计时为了方便而设立的。但是个人认为,这实在是一个蹩脚的设计。应该将主窗口与控件的接口完全统一了,就像windows A

doon的专栏 5302
上一篇: 关于OGRE四元数和旋转的一些浅显认识`
下一篇: OGRE之第一个程序
Beyond我爱杨
博客等级 码龄13年 36粉丝 39原创
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值