程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用VB5.0設計能適應各種顯示屬性下的界面

用VB5.0設計能適應各種顯示屬性下的界面

編輯:VB綜合教程
----在設計一般應用軟件時,總希望設計的軟件,無論顯示器分辨率設置是640X480,800X600還是1024X768,無論顯示器設置是在大字體還是小字體軟件都能正常運行,並且有美觀一致的界面。本人在用VB5.0設計《英語集成訓練系統V2.0》時,亦遇到這樣的麻煩。下面解釋克服這一問題的方法。
  
  ----一:使界面居中
  
  ----為了使界面元素能在各種顯示分辨率下均有合理的布局,一種方法就是獲取當前顯示分辨率,然後根據這一分辨率計算界面各元素的位置和大小,並進行設置。這種方法雖然能解決界面元素布局問題,但需要知道每個元素的位置和大小,程序煩瑣。
  
  ----我這裡采用的方法是:首先設計一個具有極大化,無邊界,無標題,無控制盒的窗體,然後在其上放置一個容器控件Picture,在Picture中再放置其它控件。在窗體Load事件中根據當前的顯示分辨率居中Picture,從而實現了居中整個界面。具體代碼如下:
  
  PrivateSubForm_Load()
  CallCenterControl(Picture1)
  EndSub
  PublicSubCenterControl(objAsObject)
  Dimcx,cyAsSingle
  cx=(Screen.Width/Screen.
  TwipsPerPixelX-obj.Width)/2#
  cy=(Screen.Height/Screen.
  TwipsPerPixelY-obj.Height)/2#
  obj.Left=cx
  obj.Top=cy
  EndSub
  
  ----二:使界面適應大字體與小字體
  
  ----Win95在創建控件時,會根據當前顯示屬性為大字體或小字體來作相應調整。盡管應用程序傳送的參數(控件位置和尺寸)是一致的,但實際控件的位置和尺寸在這兩種情形下並不一樣。如果應用程序僅僅考慮一般小字體的情況,在大字體下界面則十分難看混亂,甚至無法操作。為解決這一問題,首先應了解當前顯示器設置,這可通過系統注冊表來獲取。下面的程序采用了另一種方法:首先在一個映射模式為Pixel的窗體中放置一個控件,在顯示屬性為小字體的設計環境下首先看一下控件的初始位置x,y,然後在窗體的Load事件中計算出X和Y方向的放大比例xFac,yFac:
  
  PrivateSubForm_Load()
  xFac=400#/mmlhwnd.Left
  yFac=400#/mmlhwnd.Top
  EndSub
  
  ----其中,mmllhwnd為放置在窗體中的控件,初始的坐標為400,400。
  
  ----最後在各個需要調整界面的窗體Load事件中調用下列子程序,調整各控件的位置與大小:
  
  PublicSubCorrectForm(fmAsForm)
  DimCAsControl
  ForEachCInfm.Controls
  IfTypeOfCIsTimerThen
  ElseIfTypeOfCIsCommonDialogThen
  ElseIfTypeOfCIsLineThen
  C.X1=C.X1*xFac
  C.Y1=C.Y1*yFac
  C.X2=C.X2*xFac
  C.Y2=C.Y2*yFac
  Else
  C.Left=C.Left*xFac
  C.Top=C.Top*yFac
  IfTypeOfCIsSSCommandThen
  C.Width=C.Width*xFac
  C.Height=C.Height*yFac
  C.FontSize=C.FontSize*xFac
  ElseIfTypeOfCIsCommandButtonThen
  C.Width=C.Width*xFac
  C.Height=C.Height*yFac
  C.FontSize=C.FontSize*xFac
  ElseIfTypeOfCIsListBoxThen
  C.Width=C.Width*xFac
  C.Height=C.Height*yFac
  C.FontSize=C.FontSize*xFac
  ElseIfTypeOfCIsComboBoxThen
  C.Width=C.Width*xFac
  C.FontSize=C.FontSize*xFac
  EndIf
  EndIf
  NextC
  EndSub
  
  ----上述程序中僅列舉了幾個典型的控件,如果窗體中還有其它類型的控件,仿造上述程序加入對這些控件類型的處理即可。->

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