C语言实现类似QQ聊天界面抖动功能!
时间:2022-07-22
本文章向大家介绍C语言实现类似QQ聊天界面抖动功能!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
大家好,我们首先来看下下面两张图:
上面两个图片想必大家都见过也用过,那就是QQ的窗口抖动功能,今天给大家带来的就是用C来实现类似QQ窗口抖动的小知识,其实窗口的抖动的原理就是让它在不同的几个位置停顿一小下然后再来回移动,我们先来看代码,稍后再进行解释。
#include <stdio.h>
#include<Windows.h>
int main(void)
{
int time = 60; //休眠的时间,为60毫秒
int distance = 10; //移动了10像素
RECT rect; //RECT是一个矩形结构体,相当于保存了一个矩形的四条边的坐标
HWND window = NULL, oldwindow = NULL; //两个窗口句柄
int x, y, width, height; //用来保存窗口横纵坐标和宽度、高度的变量
int i;
//抖50次吧
for (i = 0; i < 10; i++) {
window = GetForegroundWindow(); //拿到活动窗口
if (window != oldwindow) {
//获取指定窗口的位置
GetWindowRect(window, &rect);
x = rect.left;
y = rect.top;
width = rect.right - x;
height = rect.bottom - y;
oldwindow = window;
}
MoveWindow(window, x - distance, y, width, height, TRUE); //移动窗口,向左移动了10像素,下同
Sleep(time); //休眠time毫秒,线程休眠
MoveWindow(window, x - distance, y -distance, width, height, TRUE);
Sleep(time);
MoveWindow(window, x, y - distance, width, height, TRUE);
Sleep(time);
MoveWindow(window, x, y, width, height, TRUE);
Sleep(time);
}
return 0;
}
原理上面讲了,无非就两点:停顿和移动,那我们来讲一下二者的具体实现,关于停顿我们用到了sleep函数,这里有一点简单提一下,sleep函数在windows和linux中是不一样的,除了头文件以外,windows中单位为毫秒且S要大写,而linux中为秒,我们这里默认的是windows中,就相当于调用了windows API函数,这就形成了停顿的效果!而窗口的移动同样还是调用windows中的API,包括获取句柄,移动位置等。总体来说抖动功能的实现思路是比较简单的的,代码量也不大,抖动的动图没有截取,有兴趣的可以自己尝试一下,希望对大家有所帮助。
- c++/c 获取cpp文件行号跟文件名
- 零基础学编程042:画函数图像
- C-SATS工程副总裁教你如何用TensorFlow分类图像 part2
- C++11 Lambda表达汇总总结
- TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
- C++虚析构函数解析
- C-SATS工程副总裁教你如何用TensorFlow分类图像 part1
- 帝国cms文章页调用当前文章URL如何操作?
- dedecms文章页调用地址(当前文章URL)如何操作?
- 饭团开通一周,3人学会了比特币操作
- Sample K算法
- C#读取“我的文档”等特殊系统路径及环境变量
- winform CheckedListBox实现全选/全不选
- 机器学习该如何入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 代码详解——《无人驾驶车辆模型预测控制》3.3.3代码详解
- 【前端】:模块化 - 打包技术
- 代码详解——《无人驾驶车辆模型预测控制》3.3.3参考路径更改
- MySQL redo与undo日志解析
- 样本不平衡造成的影响和解决方案
- 代码详解——NMPC路径跟踪复杂参考路径设置
- 代码详解——NMPC之加入控制平顺性惩罚项
- 代码详解——采用控制增量作为控制输入的NMPC路径跟踪
- 程序员进阶系列:年少不懂爱家家,懂了已是猿中人。
- 代码详解——Simulink中的运动学模型
- Spring Boot 特性之 Failure Analysis
- 「周末福报」头铁的我,一头扎进了知识盲区 ThreadLocal
- 「周末福报」如何高效使用 Kryo
- 「刷题警告」递归算法
- 轻松学Pytorch – 构建生成对抗网络