使用ShowWindow函數(shù),便可輕松控制窗口的顯隱,最小化,最大化。
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)十余年經(jīng)驗(yàn)成就非凡,專業(yè)從事成都做網(wǎng)站、網(wǎng)站建設(shè),成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文平臺(tái),1元廣告等。十余年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18982081108,我們期待您的來電!
概述
函數(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ì)偶爾造成指令丟失,不可避免。不管你激活窗口還是最大化窗口或者鎖定都沒辦法完全避免。
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() '如果沒有打開的窗體中未找到,重新打開窗體
這樣寫,每次點(diǎn)擊按鈕事件都會(huì)創(chuàng)建一個(gè)新的form。
你想要的效果是主窗口生命周期內(nèi),子form是一個(gè)。
根據(jù)這個(gè)你再考慮下怎么實(shí)現(xiàn)。比如主form加載時(shí)創(chuàng)建子form。點(diǎn)擊事件中去獲取子form的焦點(diǎn)。
看起來是鼠標(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)左鍵