程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 利用VB控制窗口顯示風格

利用VB控制窗口顯示風格

編輯:VB綜合教程
軟件界面生動與否很大程度上決定於你對窗口的設計和控制。事實上,Windows程序員可以對系統中的任何窗口進行操縱,它意味著,Windows程序員可以直接操縱任何正在運行的應用窗口;可以發現一個特定的應用是否在運行,如果該應用沒有運行還可以啟動它;可以重新排列屏幕上的所有窗口;還可以使其他應用的窗口最大化或最小化。下面我們探討一種十分有意義的應用。
  我們很希望在程序激活其它窗口時仍使得封面窗口處於前台,也就是說該窗口具有“總在最前面”(“AlwaysOnTop”)這一特性。其實Microsoft系列軟件都是這樣做的,當你運行Word、Excel或PowerPoint時,你會發現它們的封面窗口不隨系統激活其它窗口而消
  失。
  VisualBasicForWindows3.0(以下簡稱VB)作為一種可視化編程軟件,以其優秀的圖形化界面設計風格而著稱。利用它可使軟件開發周期大為縮短,然而VB對WindowsDLL(動態鏈接庫)調用的強大功能卻易受不少程序員所忽略。事實上,靈活應用WindowsDLL的API(應用程序接口)才能使你開發的系統更加充滿活力。正是由於VB支持DLL使得我們可以隨心所欲地控制窗口顯示風格,從而我們可以讓系統封面總處於前台,下面說明用到的API函數。
  .SetWindowPOS
  VB定義:DeclareSubSetWindowPosLib“User”(BybalhWndasInteger,
  hWndInserAfterasInteger,ByValXasInteger,ByValYasInteger,ByVal
  cxasInteger,ByValcyasInteger,ByValwFlagsasInteger)
  
  說明:能改變窗口的位置和大小,並能修改窗口在內部窗口列表中所處的位置,
  以控制顯示次序。
  參數類型/說明
  hWndInteger-需定位的窗口
  hWndInserfterInteger-窗口句柄,在窗口列表裡,窗口hWnd將放在該窗口句柄的後面,它可以取以下值:
  HWND_BOTTOM:把窗口放在窗口列表的底部;
  HWND-TOP:把窗口放在Z序的頂部。Z序是窗口按層次級別顯示的順序;
  HWND_TOP(MOST):把窗口放在列表的頂部,位於所有最頂窗口之後。
  XInteger—窗口新的x坐標,如果hWnd是一個子窗口,X給出的是父窗口的客戶坐標。
  YInteger—窗口新的Y坐標,如果hWnd是一個子窗口,Y給出的是父窗口的客戶坐標。
  cxInteger—指定新窗口寬度。
  cyInteger—指定新窗口高度。
  wFlagsInteger—包含下列標志之一的整數:
  SWP_DRAWFRAME:圍繞窗口畫一個邊框;
  SWP_HIDEWINDOW:隱藏該窗口;
  SWP_NOACTIVATE:不激活該窗口;
  SWP_NOMOVE:保持當前位置(X和Y被忽略);
  SWP_NOREDRAW:窗口不自動重畫;
  SWP_NOSIZE:保持當前大小(cx和cy被忽略);
  SWP_NOZORDER:保持窗口列表中的當前位置(hWndInsertAfter被忽略);
  SWP_SHOWWINDOW:顯示該窗口。
  注釋:當一個窗口成為最頂窗口時,它所有的從屬窗口也成為最頂窗口;當它成為非最頂窗口時,它全部的從屬窗口和擁有窗口也成為非最頂窗口,Z序表示窗口沿著從屏幕裡向外延伸的假想Z軸,從頂到底的排列次序。
  VB實現窗口擁有“AlwaysOnTop”特性:
  首先,定義全局常量及函數。
  GlobalConstHWND_TOPMOST=-1
  GlobalConstSWP_NOACTIVATE=&H10
  GlobalConstSWP_SHOWWINDOW=&H40
  DeclareSubSetWindowPosLib“User”(ByBalhWndasInteger,hWndInserAfterasInteger,ByValXasInteger,ByValYasInteger,ByValcxasInteger,ByValcyasInteger,ByVALwFlagsasInteger)主程序如下編寫:
  SubMain0
  Screen.MousePointer=11'使鼠標變為漏斗狀
  LoadSystemCover'裝載系統封面窗體
  SetWindowPosSystemCover.hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATEOrSWP_SHOWWINDOW'使得封面總處於最前面
  LoadInitWindow1'裝載初始化窗體1
  LoadInitWindow2'裝載初始化窗體2
  :
  :
  
  UnloadSystemCover'關閉系統封面窗體
  Screen.MousePointer=0'使鼠標變為缺省形狀
  EndSub->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved