vb用户界面怎样随电脑分辨率改变,而自动设整大少???

解决方案 »

  1.   

    Option Explicit
    Public Xtwips As Integer, Ytwips As Integer
    Public Xpixels As Integer, Ypixels As IntegerType FRMSIZE
       Height As Long
       Width As Long
    End TypePublic RePosForm As Boolean
    Public DoResize As Boolean
    Dim MyForm As FRMSIZE
    Dim DesignX As Integer
    Dim DesignY As Integer
    Dim ScaleFactorX As Single, ScaleFactorY As Single 
    Sub Resize_For_Resolution(ByVal SFX As Single, ByVal SFY As Single, MyForm As Form)
    Dim I As Integer
    Dim SFFont As Single
    SFFont = (SFX + SFY) / 2
    On Error Resume Next
    With MyForm
      For I = 0 To .Count - 1
       If TypeOf .Controls(I) Is ComboBox Then
         .Controls(I).Left = .Controls(I).Left * SFX
         .Controls(I).Top = .Controls(I).Top * SFY
         .Controls(I).Width = .Controls(I).Width * SFX
       Else
         .Controls(I).Move .Controls(I).Left * SFX, _
          .Controls(I).Top * SFY, _
          .Controls(I).Width * SFX, _
          .Controls(I).Height * SFY
       End If
         .Controls(I).FontSize = .Controls(I).FontSize * SFFont
      Next I
      If RePosForm Then
         .Move .Left * SFX, .Top * SFY, .Width * SFX, .Height * SFY
      End If
    End With
    End Sub
    Public Sub FormResize(TheForm As Form)
    Dim ScaleFactorX As Single, ScaleFactorY As Single
    If Not DoResize Then
       DoResize = True
       Exit Sub
    End If
    RePosForm = False
    ScaleFactorX = TheForm.Width / MyForm.Width
    ScaleFactorY = TheForm.Height / MyForm.Height
    Resize_For_Resolution ScaleFactorX, ScaleFactorY, TheForm
    MyForm.Height = TheForm.Height
    MyForm.Width = TheForm.Width
    End SubPublic Sub AdjustForm(TheForm As Form)
    Dim Res As String ' Returns resolution of system
    ' Put the design time resolution in here
    DesignX = 640
    DesignY = 480
    RePosForm = True
    DoResize = False
    Xtwips = Screen.TwipsPerPixelX
    Ytwips = Screen.TwipsPerPixelY
    Ypixels = Screen.Height / Ytwips
    Xpixels = Screen.Width / Xtwips
    ScaleFactorX = (Xpixels / DesignX)
    ScaleFactorY = (Ypixels / DesignY)
    TheForm.ScaleMode = 1
    Resize_For_Resolution ScaleFactorX, ScaleFactorY, TheForm
    Res = Str$(Xpixels) + "  by " + Str$(Ypixels)
    Debug.Print Res
    MyForm.Height = TheForm.Height
    MyForm.Width = TheForm.Width
     
    End Sub
      

  2.   

    简单的界面或者说元素比较少的时候,自己写代码即可,坐标移动时最好使用坐标系转换的API以保证相对位置..实际上有很多控件都能实现还是"免费"的
      

  3.   

    分辨率大小可以直接由VB的SCREEN对象获取,,,当然如果不想循环获取那就拦截这个消息然后获取分辨率,再设置窗体大小控件大小和位置等.