| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3068 人关注过本帖
标题:vb与win7系统
取消只看楼主 加入收藏
erhu10
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2010-9-4
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:4 
vb与win7系统
用vb在XP系统下做好的界面在win7操作系统下,控件会被放大导致显示不全,请问有什么好的解决办法没有???
搜索更多相关主题的帖子: 系统 
2010-09-04 15:59
erhu10
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2010-9-4
收藏
得分:0 
。。。。。。   

[ 本帖最后由 erhu10 于 2010-9-5 10:02 编辑 ]
2010-09-04 16:27
erhu10
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2010-9-4
收藏
得分:0 
回复 2楼 bczgvip
图片附件: 游客没有浏览图片的权限,请 登录注册

在win7下运行
图片附件: 游客没有浏览图片的权限,请 登录注册

在XP下运行

[ 本帖最后由 erhu10 于 2010-9-5 10:09 编辑 ]
2010-09-04 16:29
erhu10
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2010-9-4
收藏
得分:0 
回复 5楼 风吹过b
Public fbl As Integer
Public shuiping As Integer
Public cuizhi As Integer

Sub SetDeviceIndependentWindow(thisform As Form)
Dim Obj As Control
Dim DesignX As Integer
Dim DesignY As Integer
Dim XFactor As Single
Dim YFactor As Single
Dim X As Integer
    DesignX = 1440: DesignY = 900
    XFactor = (Screen.Width / Screen.TwipsPerPixelX) / DesignX
    YFactor = (Screen.Height / Screen.TwipsPerPixelY) / DesignY
  If XFactor = 1 And YFactor = 1 Then
     fbl = 0
  Else: fbl = 1
  End If
End Sub
Public Sub ResizeForm(formname As Form)
Dim pos(4) As Double
Dim i As Long, TempPos As Long, StartPos As Long
Dim Obj As Control
Dim ScaleX As Double, ScaleY As Double
ScaleX = shuiping / 1440
ScaleY = cuizhi / 900
On Error Resume Next
   For Each Obj In formname
     StartPos = 1
       For i = 0 To 3
        TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
        If TempPos > 0 Then
          pos(i) = Val(Mid(Obj.Tag, StartPos, TempPos - StartPos))
          StartPos = TempPos + 1
        Else
          pos(i) = 0
        End If
      Next i
     Obj.Move pos(0) * ScaleX, pos(1) * ScaleY, pos(2) * ScaleX, pos(3) * ScaleY
     If TypeOf Obj Is OptionButton Then
        Obj.FontSize = Obj.FontSize * ScaleX
       ElseIf TypeOf Obj Is ComboBox Then
         Obj.FontSize = Obj.FontSize * ScaleX
        ElseIf TypeOf Obj Is TextBox Then
          Obj.FontSize = Obj.FontSize * ScaleX
         ElseIf TypeOf Obj Is Label Then
           Obj.FontSize = Obj.FontSize * ScaleX
        ElseIf TypeOf Obj Is CheckBox Then
          Obj.FontSize = Obj.FontSize * ScaleX
       ElseIf TypeOf Obj Is CommandButton Then
         Obj.FontSize = Obj.FontSize * ScaleX
     ElseIf TypeOf Obj Is Frame Then
       Obj.FontSize = Obj.FontSize * ScaleX
     End If
  Next Obj
On Error GoTo 0
End Sub
Public Sub ResizeInit(formname As Form)
Dim Obj As Control
On Error Resume Next

  For Each Obj In formname
    Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
  Next Obj
On Error GoTo 0
End Sub
这是我的窗体自适应程序,帮忙看一下哪儿有问题好吗?
对比图已改,但是之前那张图在xp1680*1050分辨率下也显示不全,不知道什么原因

[ 本帖最后由 erhu10 于 2010-9-5 10:15 编辑 ]
2010-09-05 10:01
erhu10
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2010-9-4
收藏
得分:0 
回复 5楼 风吹过b
我发现界面显示还与电脑的DPI设置有关,如何用VB去适应不同的DPI设置呢???
2010-09-05 15:26
快速回复:vb与win7系统
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017910 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved