C語言仿QQ聊天界面抖動(dòng)功能
本文實(shí)例為大家分享了C語言 QQ聊天界面抖動(dòng)的具體代碼,供大家參考,具體內(nèi)容如下

圖片中的窗口抖動(dòng)功能大家應(yīng)該都用過,今天給大家?guī)淼木褪怯肅來實(shí)現(xiàn)類似QQ窗口抖動(dòng)的小練習(xí),其實(shí)窗口的抖動(dòng)的原理就是讓它在不同的幾個(gè)位置停頓一小下然后再來回移動(dòng),我們先來看代碼,稍后再進(jìn)行解釋。
#include <stdio.h>
#include<Windows.h>
int main(void)
{
int time = 60; //休眠的時(shí)間,為60毫秒
int distance = 10; //移動(dòng)了10像素
RECT rect; //RECT是一個(gè)矩形結(jié)構(gòu)體,相當(dāng)于保存了一個(gè)矩形的四條邊的坐標(biāo)
HWND window = NULL, oldwindow = NULL; //兩個(gè)窗口句柄
int x, y, width, height; //用來保存窗口橫縱坐標(biāo)和寬度、高度的變量
int i;
//抖50次吧
for (i = 0; i < 10; i++) {
window = GetForegroundWindow(); //拿到活動(dòng)窗口
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); //移動(dòng)窗口,向左移動(dòng)了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;
}
原理上面講了,無非就兩點(diǎn):停頓和移動(dòng),那我們來講一下二者的具體實(shí)現(xiàn),關(guān)于停頓我們用到了sleep函數(shù),這里有一點(diǎn)簡單提一下,sleep函數(shù)在windows和linux中是不一樣的,除了頭文件以外,windows中單位為毫秒且S要大寫,而linux中為秒,我們這里默認(rèn)的是windows中,就相當(dāng)于調(diào)用了windows API函數(shù),這就形成了停頓的效果!而窗口的移動(dòng)同樣還是調(diào)用windows中的API,包括獲取句柄,移動(dòng)位置等??傮w來說抖動(dòng)功能的實(shí)現(xiàn)思路是比較簡單的。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用C語言實(shí)現(xiàn)一個(gè)最簡單的飛機(jī)游戲
在前面彈跳小球?的基礎(chǔ)上實(shí)現(xiàn)一個(gè)簡單的飛機(jī)游戲,主要包括飛機(jī)的顯示、控制移動(dòng)、顯示復(fù)雜圖案、發(fā)射激光、打靶練習(xí)等功能,感興趣的可以嘗試一下2022-10-10
C++標(biāo)準(zhǔn)之(ravalue reference) 右值引用介紹
臨時(shí)對象的產(chǎn)生和拷貝所帶來的效率折損,一直是C++所為人詬病的問題,下面簡單地介紹一下Copy Elision、RVO,對此不感興趣的可以直接跳過2012-11-11
詳解C++設(shè)計(jì)模式編程中策略模式的優(yōu)缺點(diǎn)及實(shí)現(xiàn)
這篇文章主要介紹了C++設(shè)計(jì)模式編程中策略模式的優(yōu)缺點(diǎn)及實(shí)現(xiàn),文中討論了策略模式中設(shè)計(jì)抽象接口的繼承和組合之間的區(qū)別,需要的朋友可以參考下2016-03-03
C語言 TerminateProcess函數(shù)案例詳解
這篇文章主要介紹了C語言 TerminateProcess函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C++設(shè)計(jì)模式編程中的迭代器模式應(yīng)用解析
這篇文章主要介紹了C++設(shè)計(jì)模式編程中的迭代器模式應(yīng)用解析,迭代器模式注重對集合中元素的遍歷而不使其暴露,需要的朋友可以參考下2016-03-03
C++中的運(yùn)算符和運(yùn)算符優(yōu)先級總結(jié)
這篇文章主要介紹了C++中的運(yùn)算符和運(yùn)算符優(yōu)先級總結(jié),主要整理了算術(shù)、關(guān)系、邏輯、位和賦值運(yùn)算符的用法,需要的朋友可以參考下2016-05-05
C++智能指針shared_ptr與weak_ptr的實(shí)現(xiàn)分析
shared_ptr是一個(gè)標(biāo)準(zhǔn)的共享所有權(quán)的智能指針,允許多個(gè)指針指向同一個(gè)對象,定義在 memory 文件中,命名空間為 std,這篇文章主要介紹了C++ 中 shared_ptr weak_ptr,需要的朋友可以參考下2022-09-09

