Option Explicit
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub Form_Load()
    SetParent List1.hWnd, Frame1.Parent.hWnd
    List1.Top = List1.Top + Frame1.Top
    List1.Left = List1.Left + Frame1.Left
End Sub
Private Sub Form_Unload(Cancel As Integer)
    SetParent List1.hWnd, Frame1.hWnd
End Sub
SetParent VB声明 
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long 
说明 
指定一个窗口的新父(在vb里使用:利用这个函数,vb可以多种形式支持子窗口。例如,可将控件从一个容器移至窗体中的另一个。用这个函数在窗体间移动控件是相当冒险的,但却不失为一个有效的办法。如真的这样做,请在关闭任何一个窗体之前,注意用SetParent将控件的父设回原来的那个) 
返回值 
Long,前一个父窗口的句柄 
参数表 
参数 类型及说明 
hWndChild Long,子窗口的句柄 
hWndNewParent Long,hWndChild的新父 
注解 
可用这个函数在运行期将vb控件置入容器控件内部(比如将一个按钮设成图象或窗体控件的子窗口),或者将控件从一个容器控件移至另一个。控件移至另一个父后,它的位置将由新父的坐标系统决定。这样一来,有必要重新规定控件的位置,使其能在目标位置显示出来
 Top
 

解决方案 »

  1.   

    使用vsScorllBar控件
    Private Sub VSDate_Change() '卷动窗口,得到相应的位置
    Dim k As Integer
        k = VSDate.value
        listbox.Top = 0 - listbox.Height * (自己设定)
    End Sub
      

  2.   

    icnetcn(yoyo之无双) 
    你那样做还是改变了大小,如果要移动listbox还要调用另外的api
      

  3.   

    谢谢楼上各位。
    有没有人知道CboBox是怎么实现的?当CboBox 放在容器内的时候,点击下拉的时候,List总是能够显示出来的。
      

  4.   

    我想做的是一个控件,类似于CboBox,但是当LIST下拉的时候,会被上级容器遮住,各位谁知道该怎么解决?
      

  5.   

    既然用的是LISTBOX,就退而求其次吧-加个横向滚动条
    e.g.,
    SendMessage ListBox.hwnd, LB_SETHORIZONTALEXTENT, 800, 0
    800就是宽度,最后的一定是0
      

  6.   

    你可以去qeehong.yeah.net下载一个来看看
    那里有你说的类似的两个代码