您好,登錄后才能下訂單哦!
這篇文章主要介紹了易語言如何隱藏窗口,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
本經(jīng)驗(yàn)可以幫你的軟件添加像氣QQ一樣的伸縮窗口
新建一個(gè)Windows窗口程序
雙擊啟動(dòng)窗口,輸入代碼:
.版本 2 .支持庫 spec .程序集 窗口程序集1 .程序集變量 原窗口, 整數(shù)型 .程序集變量 停靠, 整數(shù)型, , , 1左,2上,3右,0為不 .程序集變量 正在收放, 整數(shù)型, , , 1收,2放 .程序集變量 計(jì)數(shù), 整數(shù)型 .程序集變量 已收起, 邏輯型 .程序集變量 時(shí)鐘, 整數(shù)型 .程序集變量 步進(jìn)長度, 整數(shù)型, , , 新加的 .程序集變量 最小尺寸, 整數(shù)型, , , 新加的 .子程序 __啟動(dòng)窗口_創(chuàng)建完畢 ' 本程序嚴(yán)格按照比賽要求,只限制左,上,右窗口移動(dòng)和???且只和鼠標(biāo)在窗口停留或離開后1秒后才有動(dòng)作-borisc 原窗口 = 設(shè)置窗口信息_ (取窗口句柄 (), #GWL_WNDPROC, 到整數(shù) (&處理)) 讀回窗口位置 () 步進(jìn)長度 = 15 最小尺寸 = 5 .子程序 讀回窗口位置, , , 移植_ .局部變量 配置文件名, 文本型 配置文件名 = 取運(yùn)行目錄 () + “\窗口位置.INI” _啟動(dòng)窗口.高度 = 到數(shù)值 (讀配置項(xiàng) (配置文件名, “WINDOW”, “高度”, 到文本 (取屏幕高度 () ÷ 2))) _啟動(dòng)窗口.寬度 = 到數(shù)值 (讀配置項(xiàng) (配置文件名, “WINDOW”, “寬度”, 到文本 (取屏幕寬度 () ÷ 4))) _啟動(dòng)窗口.左邊 = 到數(shù)值 (讀配置項(xiàng) (配置文件名, “WINDOW”, “左邊”, 到文本 (取屏幕寬度 () ÷ 2))) _啟動(dòng)窗口.頂邊 = 到數(shù)值 (讀配置項(xiàng) (配置文件名, “WINDOW”, “頂邊”, “0”)) .如果真 (_啟動(dòng)窗口.左邊 > 取屏幕寬度 () - 30) _啟動(dòng)窗口.左邊 = (取屏幕寬度 () - _啟動(dòng)窗口.寬度) ÷ 2 .如果真結(jié)束 .如果真 (_啟動(dòng)窗口.左邊 < 0) _啟動(dòng)窗口.左邊 = 0 .如果真結(jié)束 .如果真 (_啟動(dòng)窗口.頂邊 > 取屏幕高度 () - _啟動(dòng)窗口.高度) _啟動(dòng)窗口.頂邊 = 取屏幕高度 () - _啟動(dòng)窗口.高度 .如果真結(jié)束 .如果真 (_啟動(dòng)窗口.頂邊 < 0) _啟動(dòng)窗口.頂邊 = 0 .如果真結(jié)束 調(diào)試輸出 (“_啟動(dòng)窗口.”, _啟動(dòng)窗口.左邊, _啟動(dòng)窗口.頂邊, _啟動(dòng)窗口.高度, _啟動(dòng)窗口.寬度) .子程序 將被銷毀保存位置, , , 移植_ .局部變量 配置文件名, 文本型 配置文件名 = 取運(yùn)行目錄 () + “\窗口位置.INI” 寫配置項(xiàng) (配置文件名, “WINDOW”, “左邊”, 到文本 (_啟動(dòng)窗口.左邊)) 寫配置項(xiàng) (配置文件名, “WINDOW”, “頂邊”, 到文本 (_啟動(dòng)窗口.頂邊)) 寫配置項(xiàng) (配置文件名, “WINDOW”, “高度”, 到文本 (_啟動(dòng)窗口.高度)) 寫配置項(xiàng) (配置文件名, “WINDOW”, “寬度”, 到文本 (_啟動(dòng)窗口.寬度)) .子程序 處理, 整數(shù)型 .參數(shù) hwnd, 整數(shù)型 .參數(shù) Msg, 整數(shù)型 .參數(shù) wp, 整數(shù)型 .參數(shù) lp, 整數(shù)型 .判斷開始 (Msg = #WM_MOVING) ' 正在移動(dòng) 限制移動(dòng)或大小 (lp, 0) .如果真 (???nbsp;≠ 0) ' 移動(dòng)禁止依靠 ???nbsp;= 0 正在收放 = 0 .如果真結(jié)束 .判斷 (Msg = #WM_GETMINMAXINFO) ' 正在獲得大小消息 .如果真 (正在收放 = 0) 限制移動(dòng)或大小 (lp, 1) .如果真結(jié)束 .判斷 (Msg = #WM_SIZING) ' 正在改變大小 .如果真 (???nbsp;≠ 0) ' 大小禁止依靠 ???nbsp;= 0 正在收放 = 0 .如果真結(jié)束 .判斷 (Msg = #WM_SIZE) ' 大小已改變 判斷停靠 () .判斷 (Msg = #WM_MOVE) ' 位置已移動(dòng) .如果真 (正在收放 = 0) ' 無收放動(dòng)作 判斷???nbsp;() .如果真結(jié)束 .判斷 (Msg = #WM_EXITSIZEMOVE) 判斷???nbsp;() .判斷 (Msg = #WM_NCLBUTTONDOWN) ' 標(biāo)題欄鼠標(biāo)按下 .如果真 (???nbsp;≠ 0) .如果真 ((已收起 或 正在收放 ≠ 0) 且 wp ≠ 2) ' 禁止大小 Msg = 0 .如果真結(jié)束 .如果真結(jié)束 .判斷 (Msg = #WM_SYSCOMMAND) ' 系統(tǒng)菜單 .如果真 ((已收起 或 正在收放 ≠ 0) 且 wp = 61440) ' 收起了禁止調(diào)整大小 Msg = 0 .如果真結(jié)束 .默認(rèn) .判斷結(jié)束 返回 (呼叫窗口函數(shù)地址_ (原窗口, hwnd, Msg, wp, lp)) .子程序 判斷停靠 .判斷開始 (頂邊 < 2) _啟動(dòng)窗口.移動(dòng) (, 0, , ) ' 這里可寫吸附 ???nbsp;= 2 ' 上 .如果真 (時(shí)鐘 = 0) 時(shí)鐘 = 設(shè)置時(shí)鐘_ (取窗口句柄 (), 1036, 100, 到整數(shù) (&判斷收放)) .如果真結(jié)束 .判斷 (左邊 < 2) 停靠 = 1 ' 左 _啟動(dòng)窗口.移動(dòng) (0, , , ) .如果真 (時(shí)鐘 = 0) 時(shí)鐘 = 設(shè)置時(shí)鐘_ (取窗口句柄 (), 1036, 100, 到整數(shù) (&判斷收放)) .如果真結(jié)束 .判斷 (左邊 > 取屏幕寬度 () - 寬度 - 2) ???nbsp;= 3 ' 右 _啟動(dòng)窗口.移動(dòng) (取屏幕寬度 () - 寬度, , , ) .如果真 (時(shí)鐘 = 0) 時(shí)鐘 = 設(shè)置時(shí)鐘_ (取窗口句柄 (), 1036, 100, 到整數(shù) (&判斷收放)) .如果真結(jié)束 .默認(rèn) 停靠 = 0 .如果真 (時(shí)鐘 ≠ 0) 銷毀時(shí)鐘_ (取窗口句柄 (), 1036) 時(shí)鐘 = 0 .如果真結(jié)束 .判斷結(jié)束 .如果真 (已收起) 判斷收起 () .如果真結(jié)束 .子程序 判斷收起 .判斷開始 (頂邊 = 5 - 高度 或 左邊 = 5 - 寬度 或 左邊 = 取屏幕寬度 () - 5) 已收起 = 真 .默認(rèn) 已收起 = 假 .判斷結(jié)束 .子程序 限制移動(dòng)或大小, , , 0移動(dòng),非0大小 .參數(shù) lp, 整數(shù)型, 參考 .參數(shù) 移動(dòng)或大小, 整數(shù)型 .局部變量 a, MINMAXINFO ' 分開子程序是不想鼠標(biāo)移動(dòng)等等其它信息也分一個(gè)變量空間,個(gè)人猜想 .判斷開始 (移動(dòng)或大小 = 0) 復(fù)制內(nèi)存1_ (a, lp, 40) ' 40為MINMAXINFO結(jié)構(gòu)長度 .如果真 (a.ptReserved.橫向位置 < 2) ' 靠邊像磁鐵一樣,為0就不吸啦 a.ptReserved.橫向位置 = 0 a.ptMaxSize.橫向位置 = 0 + 寬度 .如果真結(jié)束 .如果真 (a.ptReserved.縱向位置 < 2) a.ptReserved.縱向位置 = 0 a.ptMaxSize.縱向位置 = 0 + 高度 .如果真結(jié)束 .如果真 (a.ptMaxSize.橫向位置 > 取屏幕寬度 () - 2) a.ptReserved.橫向位置 = 取屏幕寬度 () - 寬度 a.ptMaxSize.橫向位置 = 取屏幕寬度 () .如果真結(jié)束 .如果真 (a.ptMaxSize.縱向位置 > 取屏幕高度 ()) ' 這里是限制窗口下邊不越出屏幕之外的代碼. a.ptReserved.縱向位置 = 取屏幕高度 () - 高度 a.ptMaxSize.縱向位置 = 取屏幕高度 () .如果真結(jié)束 復(fù)制內(nèi)存_ (lp, a, 40) ' 40為MINMAXINFO結(jié)構(gòu)長度 .默認(rèn) 復(fù)制內(nèi)存1_ (a, lp, 40) ' 40為MINMAXINFO結(jié)構(gòu)長度 a.ptMinTrackSize.橫向位置 = 188 ' 最小X a.ptMinTrackSize.縱向位置 = 250 ' 最小Y ' ' a.ptMaxTrackSize.橫向位置 = 取屏幕寬度 () ' 最大X ' ' a.ptMaxTrackSize.縱向位置 = 取屏幕高度 () ' 最大Y 復(fù)制內(nèi)存_ (lp, a, 40) ' 40為MINMAXINFO結(jié)構(gòu)長度 .判斷結(jié)束 ' ZeroMemory (a, 40) .子程序 判斷收放 .局部變量 x, 整數(shù)型 .局部變量 y, 整數(shù)型 x = 取鼠標(biāo)水平位置 () y = 取鼠標(biāo)垂直位置 () .判斷開始 (x < 左邊 或 x > 左邊 + 寬度 或 y < 頂邊 或 y > 頂邊 + 高度) .如果真 (正在收放 = 2) ' 正在展開時(shí)收起 正在收放 = 0 延時(shí) (10) .如果真 (???nbsp;≠ 0) 窗口收起 () .如果真結(jié)束 .如果真結(jié)束 .判斷開始 (已收起) 計(jì)數(shù) = 0 .默認(rèn) .判斷開始 (???nbsp;= 0) 計(jì)數(shù) = 0 .默認(rèn) 計(jì)數(shù) = 計(jì)數(shù) + 1 .判斷結(jié)束 .如果真 (計(jì)數(shù) = 10) ' 1秒收起 計(jì)數(shù) = 0 .如果真 (正在收放 ≠ 1) 窗口收起 () .如果真結(jié)束 .如果真結(jié)束 .判斷結(jié)束 .默認(rèn) .判斷開始 (已收起) 計(jì)數(shù) = 計(jì)數(shù) + 1 .如果真 (計(jì)數(shù) = 10) ' 1秒展開 計(jì)數(shù) = 0 .如果真 (正在收放 ≠ 2 且 停靠 ≠ 0) 窗口展開 () .如果真結(jié)束 .如果真結(jié)束 .默認(rèn) 計(jì)數(shù) = 0 .判斷結(jié)束 .如果真 (正在收放 = 1) ' 正在收起時(shí)展開 正在收放 = 0 延時(shí) (10) .如果真 (正在收放 ≠ 2 且 ???nbsp;≠ 0) 窗口展開 () .如果真結(jié)束 .如果真結(jié)束 .判斷結(jié)束 .子程序 窗口收起 .局部變量 x, 整數(shù)型 .局部變量 y, 整數(shù)型 正在收放 = 1 .判斷開始 (???nbsp;= 1) ' 左 x = _啟動(dòng)窗口.左邊 .判斷循環(huán)首 (x > 7 - _啟動(dòng)窗口.寬度) 處理事件 () .如果真 (正在收放 ≠ 1 或 ???nbsp;= 0) 返回 () .如果真結(jié)束 延時(shí) (10) x = x - 步進(jìn)長度 ' 5 _啟動(dòng)窗口.移動(dòng) (x, , , ) .判斷循環(huán)尾 () _啟動(dòng)窗口.移動(dòng) (最小尺寸 - _啟動(dòng)窗口.寬度, , , ) ' 5 .判斷 (停靠 = 3) ' 右 x = 左邊 y = 取屏幕寬度 () .判斷循環(huán)首 (x < y - 7) 處理事件 () .如果真 (正在收放 ≠ 1 或 ???nbsp;= 0) 返回 () .如果真結(jié)束 延時(shí) (10) x = x + 步進(jìn)長度 ' 5 _啟動(dòng)窗口.移動(dòng) (x, , , ) .判斷循環(huán)尾 () _啟動(dòng)窗口.移動(dòng) (y - 最小尺寸, , , ) .判斷 (停靠 = 2) ' 上 x = 頂邊 .判斷循環(huán)首 (x > 7 - 高度) 處理事件 () .如果真 (正在收放 ≠ 1 或 ???nbsp;= 0) 返回 () .如果真結(jié)束 延時(shí) (10) x = x - 步進(jìn)長度 ' 5 _啟動(dòng)窗口.移動(dòng) (, x, , ) .判斷循環(huán)尾 () _啟動(dòng)窗口.移動(dòng) (, 最小尺寸 - _啟動(dòng)窗口.高度, , ) .默認(rèn) .判斷結(jié)束 ' 銷毀時(shí)鐘_ (取窗口句柄 (), 1036) ' 時(shí)鐘=0 已收起 = 真 正在收放 = 0 總在最前 = 真 調(diào)整層次 (#頂層) 調(diào)整層次 (#最高層) .子程序 窗口展開 .局部變量 x, 整數(shù)型 .局部變量 y, 整數(shù)型 正在收放 = 2 已收起 = 假 _啟動(dòng)窗口.總在最前 = 真 _啟動(dòng)窗口.總在最前 = 假 .判斷開始 (???nbsp;= 2) ' 上 x = _啟動(dòng)窗口.頂邊 .判斷循環(huán)首 (x < -7) 處理事件 () .如果真 (正在收放 ≠ 2 或 停靠 = 0) 返回 () .如果真結(jié)束 延時(shí) (10) x = x + 步進(jìn)長度 ' 5 _啟動(dòng)窗口.移動(dòng) (, x, , ) .判斷循環(huán)尾 () _啟動(dòng)窗口.移動(dòng) (, 0, , ) .判斷 (???nbsp;= 1) ' 左 x = 左邊 .判斷循環(huán)首 (x < -7) 處理事件 () .如果真 (正在收放 ≠ 2 或 停靠 = 0) 返回 () .如果真結(jié)束 延時(shí) (10) x = x + 步進(jìn)長度 ' 5 _啟動(dòng)窗口.移動(dòng) (x, , , ) .判斷循環(huán)尾 () _啟動(dòng)窗口.移動(dòng) (0, , , ) .判斷 (???nbsp;= 3) ' 右 x = 左邊 y = 取屏幕寬度 () .判斷循環(huán)首 (x > y - _啟動(dòng)窗口.寬度 + 7) 處理事件 () .如果真 (正在收放 ≠ 2 或 ???nbsp;= 0) 返回 () .如果真結(jié)束 延時(shí) (10) x = x - 步進(jìn)長度 ' 5 _啟動(dòng)窗口.移動(dòng) (x, , , ) .判斷循環(huán)尾 () _啟動(dòng)窗口.移動(dòng) (y - _啟動(dòng)窗口.寬度, , , ) .默認(rèn) .判斷結(jié)束 正在收放 = 0 _啟動(dòng)窗口.激活 () 總在最前 = 真 調(diào)整層次 (#頂層) 調(diào)整層次 (#最高層) .子程序 __啟動(dòng)窗口_將被銷毀 設(shè)置窗口信息_ (取窗口句柄 (), #GWL_WNDPROC, 原窗口) .如果真 (時(shí)鐘 ≠ 0) 銷毀時(shí)鐘_ (取窗口句柄 (), 1036) .如果真結(jié)束 .如果真 (正在收放 ≠ 0) 正在收放 = 0 .如果真結(jié)束 將被銷毀保存位置 ()
復(fù)制DLL:
.版本 2 .DLL命令 設(shè)置窗口信息_, 整數(shù)型, "user32", "SetWindowLongA", , 在窗口結(jié)構(gòu)中為指定的窗口設(shè)置信息 指定數(shù)據(jù)的前一個(gè)值 .參數(shù) 窗口句柄, 整數(shù)型, , hwnd,欲為其取得信息的窗口的句柄 .參數(shù) 窗口信息值, 整數(shù)型, , nIndex,請(qǐng)參考GetWindowLong函數(shù)的nIndex參數(shù)的說明 .參數(shù) 窗口信息新值, 整數(shù)型, , dwNewLong,由nIndex指定的窗口信息的新值 .DLL命令 呼叫窗口函數(shù)地址_, 整數(shù)型, "user32.dll", "CallWindowProcA", , CallWindowProcA將消息傳答窗口函數(shù) .參數(shù) 前一窗口函數(shù)地址, 整數(shù)型, , lpPrevWndFunc .參數(shù) 窗口句柄, 整數(shù)型, , hwnd .參數(shù) 消息值, 整數(shù)型, , msg .參數(shù) 附加參數(shù)1, 整數(shù)型, , wParam .參數(shù) 附加參數(shù)2, 整數(shù)型, , lParam .DLL命令 復(fù)制內(nèi)存_, , "kernel32.dll", "RtlMoveMemory", , CopyMemory .參數(shù) pDest, 整數(shù)型 .參數(shù) pSrc, MINMAXINFO .參數(shù) ByteLen, 字節(jié)型 .DLL命令 復(fù)制內(nèi)存1_, , "kernel32.dll", "RtlMoveMemory", , CopyMemory1 .參數(shù) pDest, MINMAXINFO .參數(shù) pSrc, 整數(shù)型 .參數(shù) ByteLen, 字節(jié)型 .DLL命令 設(shè)置時(shí)鐘_, 整數(shù)型, "user32.dll", "SetTimer", , SetTimer .參數(shù) 窗口句柄, 整數(shù)型, , hwnd .參數(shù) 事件標(biāo)識(shí)符, 整數(shù)型, , nIDEvent .參數(shù) 時(shí)鐘周期, 整數(shù)型, , uElapse .參數(shù) 回調(diào)函數(shù)地址, 整數(shù)型, , lpTimerFunc .DLL命令 銷毀時(shí)鐘_, 整數(shù)型, "user32.dll", "KillTimer", , KillTimer .參數(shù) 窗口句柄, 整數(shù)型, , hwnd .參數(shù) 事件標(biāo)識(shí)符, 整數(shù)型, , nIDEvent .DLL命令 內(nèi)存清零_, , "kernel32.dll", "RtlZeroMemory", , ZeroMemory將一塊內(nèi)存置零 .參數(shù) 目的內(nèi)存, MINMAXINFO, 傳址, Destination .參數(shù) 長度, 整數(shù)型, , Length
復(fù)制自定義數(shù)據(jù):
.版本 2 .數(shù)據(jù)類型 坐標(biāo), , 坐標(biāo);POINTAPI .成員 橫向位置, 整數(shù)型, , , X坐標(biāo) .成員 縱向位置, 整數(shù)型, , , Y坐標(biāo) .數(shù)據(jù)類型 MINMAXINFO, , MINMAXINFO .成員 ptReserved, 坐標(biāo) .成員 ptMaxSize, 坐標(biāo) .成員 ptMaxPosition, 坐標(biāo) .成員 ptMinTrackSize, 坐標(biāo) .成員 ptMaxTrackSize, 坐標(biāo)
復(fù)制常量數(shù)據(jù):
.版本 2 .常量 GWL_WNDPROC, "-4" .常量 WM_GETMINMAXINFO, "36", , 此消息發(fā)送給窗口當(dāng)它將要改變大小或位置; .常量 WM_MOUSEMOVE, "512" .常量 WM_NCMOUSEMOVE, "160" .常量 WM_EXITSIZEMOVE, "562" .常量 WM_MOVING, "534" .常量 WM_MOVE, "3" .常量 WM_NCHITTEST, "132" .常量 WM_NCLBUTTONDOWN, "161" .常量 WM_NCLBUTTONUP, "162" .常量 WM_SIZE, "5" .常量 WM_SIZING, "532" .常量 WM_SYSCOMMAND, "274" .常量 WM_KEYUP, "257" .常量 WM_KEYDOWN, "256"
狂擊F5調(diào)試程序。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“易語言如何隱藏窗口”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。