用VB设计能适应各种显示属性的界面

用VB设计能适应各种显示属性的界面,第1张

用VB设计能适应各种显示属性的界面,第2张

在设计一般应用软件时,总是希望设计出来的软件,无论显示分辨率设置是640X480,800X600还是1024X768,无论显示设置是大字体还是小字体,都能正常运行,界面美观一致。我用VB5.0设计英语综合训练系统V2.0的时候,也遇到过这样的麻烦。下面解释如何克服这个问题。

一:界面居中。

为了使界面元素在各种显示分辨率下具有合理的布局,一种方法是获取当前的显示分辨率,然后根据该分辨率计算并设置界面元素的位置和大小。这种方法虽然可以解决界面元素的布局问题,但是需要知道每个元素的位置和大小,程序比较繁琐。

我这里采用的方法是:先设计一个最大化的、无边界、无标题、无控件框的窗口,然后在上面放置一个容器控件图片,再在图片中放置其他控件。在form Load事件中,根据当前显示分辨率将图片居中,从而实现整个界面的居中。具体代码如下:

private subform _ Load()
CallCenterControl(picture 1)
EndSub
PublicSubCenterControl(objAsObject)
Dimcx,cyAsSingle
cx=(Screen。宽度/屏幕。
TwipsPerPixelX-obj。Width)/2#
cy=(屏幕。高度/屏幕。
TwipsPerPixelY-obj。Height)/ 2#
obj。Left=cx
obj。Top=cy
EndSub

第二,让界面适应大字体和小字体。

Win95在创建控件时,会根据当前显示属性是大字体还是小字体做出相应的调整。虽然应用程序传输的参数(控件位置和大小)是一致的,但在这两种情况下,实际的控件位置和大小是不同的。如果应用只考虑一般的小字体,大字体的界面就非常难看和混乱,甚至无法操作。要解决这个问题,首先要知道当前的显示器设置,可以通过系统注册表获取。下面的程序采用另一种方法:首先将一个控件放置在映射方式为Pixel的窗体中,先在显示属性为小字体的设计环境中查看控件的初始位置x,y,然后在窗体的Load事件中计算x,y方向的放大倍数xFac,yFac:

private subform _ Load()
xFac = 400 #/mmlhwnd。左
yFac=400#/mmlhwnd。Top
EndSub

其中mmllhwnd是放置在表单中的控件,初始坐标为400,400。

最后,在每个需要调整界面的窗口加载事件中调用以下子例程来调整每个控件的位置和大小:

PublicSubCorrectForm(fmas form)
DimCAsControl
ForEachCInfm。controls
iftypeofcristimerthen
elseiftypeofciscommandialogthen
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

上面的程序中只列出了几个典型的控件。如果表单中有其他类型的控件,只需复制上面的程序,并为这些类型的控件添加处理。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用VB设计能适应各种显示属性的界面

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情