50分求 vb6.0中如何根据分辨率自动改变窗体中控件的大小

时间:2022-12-10 03:47:45
比如我的程序是在分辨率 1024X768 的分辨率中写的,
当改变了分辨率(例如:1360X600或1280X1024)时,窗体中的控件就溢出窗体或看不到了,怎么做个模块让程序在不同的分辨率下,窗体中的控件能自动适应大小,都能在窗体中显示,请各位VB高手帮忙!谢谢

12 个解决方案

#1


之前就有一帖,跟你同问.
把几种分辨率的情况都写上(也不多),做些标识,开启窗体的时候作下判断是哪种分辨率.

#3



'按比例改变表单内各元件的大小,
'在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As Form)

   Dim Obj As Control
   Dim ScaleX As Double, ScaleY As Double
  
   ScaleX = 800 / 1024
   '保存窗体宽度缩放比例
   ScaleY = 600 / 768
   '保存窗体高度缩放比例

On Error Resume Next
   For Each Obj In FormName
        Obj.Top = Obj.Top * ScaleY
        Obj.Left = Obj.Left * ScaleX
        Obj.Height = Obj.Height * ScaleY
        Obj.Width = Obj.Width * ScaleX
'       Obj.Font.Size = Obj.Font.Size * ScaleX
   Next Obj

On Error GoTo 0

End Sub

#4


在load事件中判断分辨率,在设置控件尺寸即可。

#5


我的群内好像有人问过,很简单,在Form_Resize事件里编写代码
如窗体内有一个图片框image,代码为
image1.move 500,500,me.width-1000,me.height-1000
则不管窗体大小如何改变,image都会随之缩放.这是个简单的粗略的方法,想较好的控制它的话还需要判断屏幕分辨率,不同分辨率设不同的X、Y起点,算出缩放比例,由比例再得出(X、Y)坐标.

#6


1、可以在form_resize事件中控制所有控件的大小。
2、可以用一些容器来摆放控件,这样控件就不会移动到窗体外部了。

#7


楼上各位,能否给出完整代码,我根据网上测试了一些,都没效果。谢谢大家了

#8



可以实现,但要写一堆代码。完整代码怎么给?你窗体的控件大小,分布谁知道啊?

其实,最简单的,就是:

你把不同分辨率下的窗体做出来(大小不同而已),记下所有控件的 Left, Top, Width, Hight 参数。当你检测到当前显示分辨率时,就对号入座。

#9


该回复于2009-09-15 09:30:45被版主删除

#10


一、在Form_Load事件里,使用GetSystemMetrics获得屏幕分辨率,并保存到全局变量中。
一、使用SetWindowLong和GetWindowLong子类化窗口,当屏幕分辨率变化时,系统会触发窗口的WM_GETMINMAXINFO事件,然后在此处获得新的屏幕分辨率,并计算出一个比例值,然后重新保存分辨率到全局变量中。
三、使用Form的Controls集合对象遍历窗口子控件,如果子控件为窗口控件,则使用MoveWindow调整控件位置和大小,如果为无窗口控件,则修改控件属性调整控件位置和大小。

#11


http://topic.csdn.net/u/20090910/14/ccca0d87-205d-4ec1-b4a1-23798014eae3.html

#12


飘过

#1


之前就有一帖,跟你同问.
把几种分辨率的情况都写上(也不多),做些标识,开启窗体的时候作下判断是哪种分辨率.

#2


#3



'按比例改变表单内各元件的大小,
'在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As Form)

   Dim Obj As Control
   Dim ScaleX As Double, ScaleY As Double
  
   ScaleX = 800 / 1024
   '保存窗体宽度缩放比例
   ScaleY = 600 / 768
   '保存窗体高度缩放比例

On Error Resume Next
   For Each Obj In FormName
        Obj.Top = Obj.Top * ScaleY
        Obj.Left = Obj.Left * ScaleX
        Obj.Height = Obj.Height * ScaleY
        Obj.Width = Obj.Width * ScaleX
'       Obj.Font.Size = Obj.Font.Size * ScaleX
   Next Obj

On Error GoTo 0

End Sub

#4


在load事件中判断分辨率,在设置控件尺寸即可。

#5


我的群内好像有人问过,很简单,在Form_Resize事件里编写代码
如窗体内有一个图片框image,代码为
image1.move 500,500,me.width-1000,me.height-1000
则不管窗体大小如何改变,image都会随之缩放.这是个简单的粗略的方法,想较好的控制它的话还需要判断屏幕分辨率,不同分辨率设不同的X、Y起点,算出缩放比例,由比例再得出(X、Y)坐标.

#6


1、可以在form_resize事件中控制所有控件的大小。
2、可以用一些容器来摆放控件,这样控件就不会移动到窗体外部了。

#7


楼上各位,能否给出完整代码,我根据网上测试了一些,都没效果。谢谢大家了

#8



可以实现,但要写一堆代码。完整代码怎么给?你窗体的控件大小,分布谁知道啊?

其实,最简单的,就是:

你把不同分辨率下的窗体做出来(大小不同而已),记下所有控件的 Left, Top, Width, Hight 参数。当你检测到当前显示分辨率时,就对号入座。

#9


该回复于2009-09-15 09:30:45被版主删除

#10


一、在Form_Load事件里,使用GetSystemMetrics获得屏幕分辨率,并保存到全局变量中。
一、使用SetWindowLong和GetWindowLong子类化窗口,当屏幕分辨率变化时,系统会触发窗口的WM_GETMINMAXINFO事件,然后在此处获得新的屏幕分辨率,并计算出一个比例值,然后重新保存分辨率到全局变量中。
三、使用Form的Controls集合对象遍历窗口子控件,如果子控件为窗口控件,则使用MoveWindow调整控件位置和大小,如果为无窗口控件,则修改控件属性调整控件位置和大小。

#11


http://topic.csdn.net/u/20090910/14/ccca0d87-205d-4ec1-b4a1-23798014eae3.html

#12


飘过