• 欢迎访问C语言网www.dotcpp.com 比赛栏每月有奖月赛!举办比赛联系QQ:2045302297
  • 问题反馈、粉丝交流 QQ群327452739 蓝桥杯训练群:113766799 申请群时请备注排名里的昵称
  • C语言研究中心 为您提供有图、有料、解渴的C语言专题! 欢迎讨论!

C语言实现窗口抖动功能

项目源码 CTO 18090次浏览 10个评论

大家想必都知道QQ聊天对话框中,有一个抖动个功能,相信大家也都用过,但能否用C语言做出来呢?

答案肯定是可以的! 至于如何,今天就为大家分享出来!

来吧,直接上代码!

#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
	RECT rect; //RECT是一个矩形结构体,相当于保存了一个矩形的四条边的坐标
	HWND hwnd = NULL,oldhwnd = NULL; //两个窗口句柄
	int x,y,width,height; //用来保存窗口横纵坐标和宽度、高度的变量
	int i;
	system("title C语言研究中心www.dotcpp.com");
	for(i=0;i<50;i++)
	{
		hwnd = GetForegroundWindow(); //一个API函数,获取活动窗口的句柄
		if(hwnd!=oldhwnd)
		{
			GetWindowRect(hwnd,&rect); //获取指定窗口的位置
			x = rect.left;
			y = rect.top;
			width = rect.right - x;
			height = rect.bottom - y;
			oldhwnd = hwnd; //把刚刚获取的窗口句柄保存起来。
		}
		MoveWindow(hwnd,x-10,y,width,height,TRUE); //向左移动了10像素,下同
		Sleep(5); //暂停5毫秒
		MoveWindow(hwnd,x-10,y-10,width,height,TRUE);
		Sleep(5);
		MoveWindow(hwnd,x,y-10,width,height,TRUE);
		Sleep(5);
		MoveWindow(hwnd,x,y,width,height,TRUE);
		Sleep(5);
	}
	return 0;
}

大家可以自行理解下代码,主要就是调用了windows中的几个API,包括获取句柄,移动位置等。

那么窗口的抖动其实就是让一个窗口在几个位置停顿一小下然后来回切换,就会形成抖动效果!仅此而已

怎么样,大家看懂了吗?

 

有问题随时留言

C语言研究中心www.dotcpp.com

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C语言实现窗口抖动功能
喜欢 (85)
[jinyangH@aliyun.com]
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
(10)个小伙伴在吐槽
  1. Sleep的值只有5真的够吗?
    bkbill2016-11-11 11:10 回复
    • 可以,你运行试试看
      CTO2016-11-11 11:25 回复
      • 我实验了一下,3更好
        bkbill2016-11-11 13:40 回复
  2. 不知道什么是句柄和api 求推荐书本看下 :cry:
    kidman2016-11-17 15:09 回复
    • win32API大全
      CTO2016-12-28 09:07 回复
  3. 这是什么编译软件??
    小白超2017-06-28 07:25 回复
    • Dev或者Vc6.0
      2018-11-23 20:28 回复
  4. 用java怎么实现呀?
    11112017-06-30 17:12 回复
  5. 用VC6.0可以实现吗?
    bdyx2018-02-04 15:16 回复