----在設計一般應用軟件時,總希望設計的軟件,無論顯示器分辨率設置是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
----上述程序中僅列舉了幾個典型的控件,如果窗體中還有其它類型的控件,仿造上述程序加入對這些控件類型的處理即可。->