Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOSIZE = &H1Private Sub Form_Load()
Dim x As Integer,y as interger
x=中心点x坐标-窗体宽度/2 '注意必需是屏幕坐标
y=中心点y坐标-窗体高度/2 '屏幕坐标
a = SetWindowPos(Me.hwnd, MDIForm1.hwnd,x , y , 500, 500, SWP_NOZORDER Or SWP_NOSIZE)
End Sub

解决方案 »

  1.   

    不用那么麻烦啦,,你只要在属性startupposition的属性值改为2-屏幕中心就
    可以啦,,赶快去试一试吧!呵呵!
      

  2.   

    楼上的,MDI的子窗体不能设置startupposition.
      

  3.   

    用screen对象
        frm.Top = (Screen.Height - frm.Height) / 2 -   frm.Top
        frm.Left = (Screen.Width - frm.Width) / 2 -    frm.Left
    很方便!:)
      

  4.   

    呵呵,没看清楚哟,什么时候雍亲王到VB板来了,欢迎!^_^子窗体居中!
    Private Sub LoadNewDoc()
        Static lDocumentCount As Long
        Dim frmD As frmDocument
        lDocumentCount = lDocumentCount + 1
        Set frmD = New frmDocument
        frmD.Caption = "Document " & lDocumentCount
        frmD.Move (Screen.Width - frmD.Width) / 2 - frmD.Left, (Screen.Height - frmD.Height) / 2 - frmD.Top
        frmD.Show
    End Sub
      

  5.   

    http://www.csdn.net/expert/topic/1002/1002169.xml?temp=.7665979我的回答:主  题:  怎样在MDI窗体中,让MDI子窗体居中显示. 
    作  者:  caile (采乐)  
    等  级:    
    信 誉 值:  100 
    所属论坛:  Visual Basic 
    问题点数:  20 
    回复次数:  6 
    发表时间:  2002-9-6 15:41:31 
       
     
       
    怎样在MDI窗体中,让MDI子窗体居中显示.
      
     
     
     回复人: dinggy(dinggy) (  ) 信誉:105  2002-9-6 15:56:23  得分:0  
     
     
      只能通过设置 top,left 来控制了。sub form_load()
      ......   me.left = (mainmdi.width - me.width )/2   me.top = (mainmdi.height-me.height)/2
      ......end sub
      
     
    Top 
     
     回复人: bluecc(深蓝) (  ) 信誉:100  2002-9-6 15:59:18  得分:0  
     
     
      Form1.Left = (MDIForm1.Width - Form1.Width) / 2
        Form1.Top = (MDIForm1.Height - Form1.Height) / 2 
    FORM为子窗体,在调用的时候设一下就行了.
      
     
    Top 
     
     回复人: foxsmile(小飞) (  ) 信誉:100  2002-9-6 16:01:19  得分:0  
     
     
      在子窗体的属性里可以设置啊,在startUpPosition属性里(2-屏幕中心)
      
     
    Top 
     
     回复人: caile(采乐) (  ) 信誉:100  2002-9-6 16:44:48  得分:0  
     
     
      "在子窗体的属性里可以设置啊,在startUpPosition属性里(2-屏幕中心)"
    你到底懂吗?还在这里混.你自己试式.其他两位,这样做不行.子窗体显示的不是窗体的正中,是在窗体的下方.太靠下了.
    谁还有其他方法.
      
     
    Top 
     
     回复人: dsclub(▁▂▃▄▅▆▇█ 騩鹬) (  ) 信誉:86  2002-9-6 16:52:23  得分:20  
     
     
      Form1.Left = (MDIForm1.ScaleWidth - Form1.Width) / 2
        Form1.Top = (MDIForm1.ScaleHeight - Form1.Height) / 2
      
     
    Top 
     
     回复人: dsclub(▁▂▃▄▅▆▇█ 騩鹬) (  ) 信誉:86  2002-9-6 16:54:00  得分:0  
     
     
      ScaleWidth和Width的区别这回体现的淋漓尽致了吧
      
     
    Top