今天本教授分享一个可以让格斯莱特林扣十分的C++程序,但老邓头应该不会知道

虽然我是一个魔药课教授,而且魔法部明令禁止使用麻瓜物品--电脑,但我斯教可不是一般人

好了,格兰芬多扣100000分!

Today, me--Professor.Snape share you a C++program that can makes Slytherin lose 10 points, but Dumbledore should not know.

Although I am a Potions master,and the Ministry of Magic expressly prohibits the use of Muggle objects -- computers, but me--Professor.Snape is not an ordinary person.

All right, Gryffindor will deduct 100000 points!

目录

一、该程序的效果

二、如何实现

1.科技与狠活

2.主函数

三.如何使用


前言

是这样的,我作为一个霍格沃茨魔药课教师,趁康奈利.福吉最近忙,偷偷使用了麻瓜物品--电脑,并使用C++运行了一个程序,真是神了,居然是电脑满屏图标!来看看吧

Well, as a Hogwarts Potions teacher, I secretly used a Muggle item -- a computer -- and ran a program with C++while Cornell Fudge was busy recently. It's amazing. It's actually a full screen icon! Come and have a look.


一、该程序的效果

这个程序可以拿来整人(那得看你怎么利用它),也可能变成其他程序的模板

直接运行,在桌面上这个样子👇

 好那我们来讲原理

二、如何实现

1.科技与狠活

#include是为了声明在这个地方插入别的文件中的代码。

#include是一个计算机专业术语,一指C/C++中包含头文件命令,用于将指定头文件嵌入源文件中。#include一般用在C、C++等语系的编译环境(就是用在编程软件的编程代码里)中,直白的说,它就是告诉你,在这个地方,你要插入一堆代码,这堆代码在另一个文件里。

在这个程序我们要用到:

#include<tchar.h>
#include<windows.h>
#include<ctime>

解释下:

    #include<tchar.h>tchar.h头文件提供了一个数据类型TCHAR, 这个类型在UNICODE环境下将映射为wchar_t类型;在ASCII环境下映射为char类型。另外, tchar.h还提供了一组c++/c语言字符串操作符的替代宏, 以_t开头, 例如_tcslen函数, 在UNICODE环境下被映射成为wcslen函数, 在ASCII环境下被映射成为strlen函数。

---------------------------------------------------------------------------------------------------------------------------------

#include<windows.h>头文件封装了库函数以及一些类,将一些复杂的工作由库函数处理,而用户不必把精力放在这些地方。比如说cout<<,为标准输出流,其实说到底还是函数调用,不过这个函数有些特殊,用的是运算符重载,确切地说是重载了"<<"运算符,作用是把键盘输入的字符信息在屏幕上打印出来,这个功能要是由我们去写,估计也得学个两三年才有可能。所以就简化了操作。而这一系列的函数都在头文件中包含(是一个函数库)。在调用时包含后便可直接用。

---------------------------------------------------------------------------------------------------------------------------------

#include<ctime>ctime分函数和类两种用途。ctime功能是 把日期和时间转换为字符串,而ctime类的对象表示的时间是基于格林威治标准时间(GMT)的。函数: ctime;功 能: 把日期和时间转换为字符串;用 法: char *ctime(const time_t *time);注:若在linux下使用本函数,需要include <ctime>头文件

2.主函数

这个程序中需要一些图标,这时我们需要用到DrawIcon函数图标,我使用了5种图标,分别是IDI_QUESTION,IDI_WARNING,IDI_ERROR,IDI_INFORMATION,IDI_WINLOGO,你当然可以加更多。还要注意图标的大小以控制坐标。LoadIcon() --加载一个图标资源,函数原型:BOOL DrawIcon(HDC hDC,int X,int Y, HICON hlcon );

用代码详细实现:

        DrawIcon(hdc,point.x+25,point.y+25,LoadIcon(NULL,IDI_QUESTION));
		DrawIcon(hdc,point.x+50,point.y+50,LoadIcon(NULL,IDI_WARNING));
		DrawIcon(hdc,point.x-5,point.y-5,LoadIcon(NULL,IDI_ERROR));
		DrawIcon(hdc,point.x-30,point.y-30,LoadIcon(NULL,IDI_INFORMATION));
		DrawIcon(hdc,point.x-60,point.y-60,LoadIcon(NULL,IDI_WINLOGO));

显然,位置和图标都要考虑;

还有while(1)让他死循环

while(1)
	{
		GetCursorPos(&point);
		
		Sleep(1);
	}

GetCursorPos,函数名。该函数检取光标的位置,以屏幕坐标表示。

大前提:别忘了提前定义:

    HWND hwnd = GetDesktopWindow();
	HDC hdc = GetWindowDC(hwnd);//GetCursorPos,函数名。该函数检取光标的位置,以屏幕坐标表示。
	POINT point;

备用;

/*      GetDesktopWindow,该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。桌面窗口是一个要在其上绘制所有的图标和其他窗口的区域。
        HWND是Handle to A Window的缩写,窗口句柄. H是类型描述,表示句柄(handle), WND 是变量对象描述,表示窗口,所以 HWND 表示窗口句柄。*/

单有图像还不够,重要的在于让他们跟着鼠标走:

    int x = GetSystemMetrics(SM_CXSCREEN);
 	int y = GetSystemMetrics(SM_CXSCREEN);
 	srand(time(0));
 	while(1) SetCursorPos(rand()%x, rand()%y);

GetSystemMetrics也是一个函数,该函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。

三.如何使用

这就简单了,直接编译运行,然后到桌面就可以了,要清除图标就关编译器然后Ctrl+E刷新,

没有副作用!!! 

月亮脸 虫尾巴 大脚板 尖头叉子很荣幸地为您奉上代码

#include<tchar.h>
#include<windows.h>
#include<ctime>//科技与狠活
using namespace std;
int main()
{
	HWND hwnd = GetDesktopWindow();
	HDC hdc = GetWindowDC(hwnd);
	POINT point;
	while(1)
	{//图标
		GetCursorPos(&point);
		DrawIcon(hdc,point.x+25,point.y+25,LoadIcon(NULL,IDI_QUESTION));
		DrawIcon(hdc,point.x+50,point.y+50,LoadIcon(NULL,IDI_WARNING));
		DrawIcon(hdc,point.x-5,point.y-5,LoadIcon(NULL,IDI_ERROR));
		DrawIcon(hdc,point.x-30,point.y-30,LoadIcon(NULL,IDI_INFORMATION));
		DrawIcon(hdc,point.x-60,point.y-60,LoadIcon(NULL,IDI_WINLOGO));
		Sleep(1);
	}
	//这里是控制跟着鼠标走
	int x = GetSystemMetrics(SM_CXSCREEN);
 	int y = GetSystemMetrics(SM_CXSCREEN);
 	srand(time(0));
 	while(1) SetCursorPos(rand()%x, rand()%y);
}

斯内普:不要 看完 复制 就跑!

更多推荐

好玩C++代码:在电脑上运行了一个C++程序,结果满屏图标!