使用ShowWindow函數(shù),便可輕松控制窗口的顯隱,最小化,最大化。
創(chuàng)新互聯(lián)公司專注于永定企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站定制開發(fā)。永定網(wǎng)站建設(shè)公司,為永定等地區(qū)提供建站服務(wù)。全流程按需定制設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
概述
函數(shù)功能:該函數(shù)設(shè)置指定窗口的顯示狀態(tài)。
函數(shù)原型:BOOL ShowWindow(HWND hWnd, int nCmdShow);
*/第一個(gè)參數(shù)為句柄,第二個(gè)參數(shù)選下面的值
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define SW_NORMAL 1
#define SW_SHOWMINIMIZED 2
#define SW_SHOWMAXIMIZED 3
#define SW_MAXIMIZE 3
#define SW_SHOWNOACTIVATE 4
#define SW_SHOW 5
#define SW_MINIMIZE 6
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
#define SW_SHOWDEFAULT 10
#define SW_FORCEMINIMIZE 11
#define SW_MAX 11
參數(shù)含義
hWnd:指窗口句柄。
nCmdShow:指定窗口如何顯示。如果發(fā)送應(yīng)用程序的程序提供了STARTUPINFO結(jié)構(gòu),則應(yīng)用程序第一次調(diào)用ShowWindow時(shí)該參數(shù)被忽略。否則,在第一次調(diào)用ShowWindow函數(shù)時(shí),該值應(yīng)為在函數(shù)WinMain中nCmdShow參數(shù)。在隨后的調(diào)用中,該參數(shù)可以為下列值之一:
SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使擁有窗口的線程被掛起也會(huì)最小化。在從其他線程最小化窗口時(shí)才使用這個(gè)參數(shù)。
SW_HIDE:隱藏窗口并激活其他窗口。
SW_MAXIMIZE:最大化指定的窗口。
SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一個(gè)頂層窗口。
SW_RESTORE:激活并顯示窗口。如果窗口最小化或最大化,則系統(tǒng)將窗口恢復(fù)到原來的尺寸和位置。在恢復(fù)最小化窗口時(shí),應(yīng)用程序應(yīng)該指定這個(gè)標(biāo)志。
SW_SHOW:在窗口原來的位置以原來的尺寸激活和顯示窗口。
SW_SHOWDEFAULT:依據(jù)在STARTUPINFO結(jié)構(gòu)中指定的SW_FLAG標(biāo)志設(shè)定顯示狀態(tài),STARTUPINFO 結(jié)構(gòu)是由啟動(dòng)應(yīng)用程序的程序傳遞給CreateProcess函數(shù)的。
SW_SHOWMAXIMIZED:激活窗口并將其最大化。
SW_SHOWMINIMIZED:激活窗口并將其最小化。
SW_SHOWMINNOACTIVATE:窗口最小化,激活窗口仍然維持激活狀態(tài)。
SW_SHOWNA:以窗口原來的狀態(tài)顯示窗口。激活窗口仍然維持激活狀態(tài)。
SW_SHOWNOACTIVATE:以窗口最近一次的大小和狀態(tài)顯示窗口。激活窗口仍然維持激活狀態(tài)。
SW_SHOWNORMAL:激活并顯示一個(gè)窗口。如果窗口被最小化或最大化,系統(tǒng)將其恢復(fù)到原來的尺寸和大小。應(yīng)用程序在第一次顯示窗口的時(shí)候應(yīng)該指定此標(biāo)志。
不過順便說一句,SendKeys會(huì)偶爾造成指令丟失,不可避免。不管你激活窗口還是最大化窗口或者鎖定都沒辦法完全避免。
VB聲明
Declare Function ShowWindow Lib "user32" Alias
"ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
說明
控制窗口的可見性(在vb里使用:針對(duì)vb窗體及控件,請(qǐng)使用對(duì)應(yīng)的vb屬性)
返回值
Long,如窗口之前是可見的,則返回TRUE(非零),否則返回FALSE(零)
參數(shù)表
參數(shù)
類型及說明
hwnd
Long,窗口句柄,要向這個(gè)窗口應(yīng)用由nCmdShow指定的命令
nCmdShow
Long,為窗口指定可視性方面的一個(gè)命令。請(qǐng)用下述任何一個(gè)常數(shù)
SW_HIDE
隱藏窗口,活動(dòng)狀態(tài)給令一個(gè)窗口
SW_MINIMIZE
最小化窗口,活動(dòng)狀態(tài)給令一個(gè)窗口
SW_RESTORE
用原來的大小和位置顯示一個(gè)窗口,同時(shí)令其進(jìn)入活動(dòng)狀態(tài)
SW_SHOW
用當(dāng)前的大小和位置顯示一個(gè)窗口,同時(shí)令其進(jìn)入活動(dòng)狀態(tài)
SW_SHOWMAXIMIZED
最大化窗口,并將其激活
SW_SHOWMINIMIZED
最小化窗口,并將其激活
SW_SHOWMINNOACTIVE
最小化一個(gè)窗口,同時(shí)不改變活動(dòng)窗口
SW_SHOWNA
用當(dāng)前的大小和位置顯示一個(gè)窗口,不改變活動(dòng)窗口
SW_SHOWNOACTIVATE
用最近的大小和位置顯示一個(gè)窗口,同時(shí)不改變活動(dòng)窗口
SW_SHOWNORMAL
與SW_RESTORE相同
Dim F1 As New Datasystem.Form2 '實(shí)例化窗體
For Each na As Form In Application.OpenForms '打開窗體的集合
If na.ProductName = F1.ProductName AndAlso na.Name = F1.Name 0 Then '判斷程序集的產(chǎn)品名稱和窗體名稱是否已存在打開的窗體中
If na.WindowState = FormWindowState.Minimized Then '判斷窗體是否最小化
na.WindowState = FormWindowState.Normal '還原窗體
End If
na.Activate() '激活窗體
Return '返回
End If
Next
F1.Show() '如果沒有打開的窗體中未找到,重新打開窗體
Declare Function OpenIcon Lib "user32" Alias
"OpenIcon" (ByVal hwnd As Long) As Long
說明
恢復(fù)一個(gè)最小化的程序,并將其激活
返回值
Long,非零表示成功,零表示失敗。會(huì)設(shè)置GetLastError
參數(shù)表
參數(shù)
類型及說明
hwnd
Long,欲恢復(fù)的窗口
注解
針對(duì)vb窗體,應(yīng)使用vb的WindowState屬性
看起來是鼠標(biāo)按住不放情況下導(dǎo)致焦點(diǎn)還保持在新建線程的窗口,然后又循環(huán)導(dǎo)致焦點(diǎn)切來切去引起閃爍。
試下在循環(huán)中的執(zhí)行代碼前加上 mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) '釋放鼠標(biāo)左鍵