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)位置等。總體來說抖動(dòng)功能的實(shí)現(xiàn)思路是比較簡單的。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01舉例剖析C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用
這篇文章主要介紹了C++中引用的本質(zhì)及引用作函數(shù)參數(shù)的使用,講解了函數(shù)返回值是引用的情況等一些難點(diǎn),需要的朋友可以參考下2016-03-03typedef_struct與struct之間的區(qū)別
本篇文章主要是對(duì)typedef struct與struct之間的區(qū)別進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12C語言中全局?jǐn)?shù)組和局部數(shù)組的問題
今天同學(xué)遇到一個(gè)在C語言中全局?jǐn)?shù)組和局部數(shù)組的問題,卡了許久,我也沒有第一時(shí)間看出問題,現(xiàn)在把問題梳理一下,并給出解決方案,需要的朋友可以參考下2012-12-12C++?Qt開發(fā)之使用QNetworkAccessManager實(shí)現(xiàn)Web網(wǎng)頁訪問
Qt?是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,本文主要介紹了如何運(yùn)用QNetworkAccessManager組件實(shí)現(xiàn)Web網(wǎng)頁訪問,需要的可以參考下2024-03-03STL priority_queue(優(yōu)先隊(duì)列)詳解
這篇文章主要介紹了 STL priority_queue(優(yōu)先隊(duì)列)詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10