我用了个MDI窗口来控制几个子窗口,可是每次调出子窗口的时候,显示的位置中是靠左上角,而且显示的大小总是与MDI的窗口的大小成一定的比例,不是我原先设计的子窗口的大小,,如果不是我设计的窗口大小就变得非常难看,有什么办法只让它按原来设计的大小来显示吗?

解决方案 »

  1.   

    你可以首先将子窗体的属性:
    BorderStyle=1
    StartUppositio=2
    然后在子窗体的Form.Load中加入以下代码:
    '    Me.Top = (MDIFrmInPr.ScaleHeight - Me.Height) / 2
    '    Me.Left = (MDIFrmInPr.Width - Me.Width) / 2
    MDIFrmInPr为自已的MDI窗体的名称。
    就可以了
      

  2.   

    呵呵,,,有好多种方法,,,,在StartUppositio中设置,,,,你可以随便选一个试下,,直到你喜欢的显示的方式,,,如果MDIchild=true的话可以设置windowstate为2-MAX的那个,,,,还有一些自动调节的:改一下就可以用了,,,
    Private Sub MDIForm_Resize()
    On Error Resume Next
        Dim X As Long, Y As Long, H As Long, W As Long
        Dim Ratio As Single
        
        With frmimage1
           .Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
           .Cls
                  If Ratio < Me.ScaleWidth / Me.ScaleHeight Then
                .Image1.Height = Me.ScaleHeight
                .Image1.Width = Me.ScaleHeight * Ratio
            Else
                .Image1.Width = Me.ScaleWidth
                .Image1.Height = Me.ScaleWidth / Ratio
            End If
           H = .ScaleHeight              '如果想改为拉伸则:H=.ScaleHeight
           W = .ScaleWidth
                            '如果想改为拉伸则:W=.ScaleWidth
           
           X = (.ScaleWidth - W) \ 2  '这里我使用整除"\"而不用浮点除法"/",也是为了提速
           Y = (.ScaleHeight - H) \ 2 '因为最后输出图像的位置是不会有半个像素的。
           .PaintPicture .Image1.Picture, X, Y, W, H
           .Refresh
        End WithEnd Sub
      

  3.   

    在Form.Load中一句话搞好:
    me.move left,top,width,height^_^