+ -
当前位置:首页 → 问答吧 → 请教程序在不同电脑上运行,控件大小变化问题

请教程序在不同电脑上运行,控件大小变化问题

时间:2011-10-09

来源:互联网

写了个监控程序,界面上有几个控件用于显示实时数据,我设定了控件的大小和位置,但是在别的电脑上安装后,出现了问题,由于屏幕大小不一样,控件位置和大小是死的,界面变得很不美观,请问怎么做才能让软件安装在任何大小的屏幕上都嫩美观整齐呢??
想到的只有计算屏幕大小,然后按比例设置所有控件大小和位置,请问还有别的更好的办法吗??谢谢

PS这是个老程序,是VB6写的,以上诉求请在VB6下实现~~~

作者: bigbillybear   发布时间: 2011-10-09

基本就这个思路

作者: yiguangqiang88   发布时间: 2011-10-09

要么把你窗体尺寸固定,禁止最大化

作者: yiguangqiang88   发布时间: 2011-10-09

引用 2 楼 yiguangqiang88 的回复:
要么把你窗体尺寸固定,禁止最大化


我已经禁止窗口化了,但是这是在不同电脑上安装。。。。。电脑屏幕大小不一样。。。。做死控件位置,显示的时候就出问题了。。。。我希望在屏幕中显示所有控件,但是在小屏幕上安装后由于不够放控件,自然就出现了滚动条。。。。

作者: bigbillybear   发布时间: 2011-10-09

用比例的话,我倒是可以计算screen.width,然后依次按比例设置控件大小,但是我觉得太麻烦了,请教下有没有更聪明的方法

作者: bigbillybear   发布时间: 2011-10-09

似乎没有更好的方法……

作者: yiguangqiang88   发布时间: 2011-10-09

好的办法是把窗体设置为固定大小
还有一个办法就是修改显示器的分辨率,具体参考这个:
http://download.csdn.net/detail/veron_04/3435467

作者: Veron_04   发布时间: 2011-10-09

引用 6 楼 veron_04 的回复:
好的办法是把窗体设置为固定大小
还有一个办法就是修改显示器的分辨率,具体参考这个:
http://download.csdn.net/detail/veron_04/3435467


固定大小固然可以,但是这么做就不能在任何电脑上都做到全屏显示,而且在很小的笔记本上还是现实不全咯~~~

修改分辨率不是很明白,研究下,但是积分不足了。。。。LS有没有这个程序。。。。上传个附件吧。。。

作者: bigbillybear   发布时间: 2011-10-09

VB code
Option Explicit
Dim dxSet As New DirectX7
Dim ddSet As DirectDraw7
Dim DisModesEnum As DirectDrawEnumModes
Dim dds2 As DDSURFACEDESC2

Dim lntWid(100) As Integer
Dim lntHig(100) As Integer
Dim lntBB(100) As Integer
Dim lntRefR(100) As Integer

Private Sub Command1_Click()
    Dim intSel As Integer
    intSel = List1.ListIndex
    Call ddSet.SetCooperativeLevel(Me.hWnd, DDSCL_ALLOWMODEX Or DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE)
    ddSet.SetDisplayMode lntWid(intSel), lntHig(intSel), lntBB(intSel), lntRefR(intSel), DDSDM_DEFAULT
    
End Sub

Private Sub Form_Load()
    Dim intP As Integer
    With Me
        .Caption = "运行在不同的分辨率下"
        .Height = 3060
        .Left = 0
        .Top = 0
        .Width = 6285
    End With
    Command1.Caption = "设置分辨率"
    Set ddSet = dxSet.DirectDrawCreate("")
    ddSet.SetCooperativeLevel Me.hWnd, DDSCL_NORMAL
    Set DisModesEnum = ddSet.GetDisplayModesEnum(DDEDM_DEFAULT, dds2)
    
    For intP = 1 To DisModesEnum.GetCount()
        DisModesEnum.GetItem intP, dds2
        lntWid(intP) = dds2.lWidth
        lntHig(intP) = dds2.lHeight
        lntBB(intP) = dds2.ddpfPixelFormat.lRGBBitCount
        lntRefR(intP) = dds2.lRefreshRate
        List1.AddItem "显示模式:" & CStr(intP - 1) & _
                      "     宽度:" & CStr(lntWid(intP)) & _
                      "     高度:" & CStr(lntHig(intP)) & _
                      "     颜色位数:" & CStr(lntBB(intP)) & _
                      "     刷新率:" & CStr(lntRefR(intP))
    Next intP
    
End Sub

作者: Veron_04   发布时间: 2011-10-09

多谢LS,我好好学学

作者: bigbillybear   发布时间: 2011-10-09

热门下载

更多