请教一个问题:我在做一个控件--向Combo一样,按下按钮可以弹出一个东西--比如Grid,但Combo的下拉框可以超出Combo所在窗体,而且总是在最前面,不知是如何作到。还有,如果下拉框会超出屏幕下方,那应该从控件上方弹出,但如果将弹出框方在控件内,则很难实现,如果你对以上问题能解决,请尽快给我回复--我很急着,要解决它。先谢谢了,拜托! 

解决方案 »

  1.   

    在控件上添加窗体,当要谈出时,模式show该窗体
    至于向上或向下,就要根据控件的容器位置、大小以及控件在容器位置来处理了,这些虽说都是一些小技巧,但也不是几句话就能说清的
      

  2.   

    Combo中的List的父窗体是 桌面 所以可以超出Combo所在窗体,所以你做的控件得想别的办法。
      

  3.   

    到 www.easthot.net 下载平面控件里面有源码
      

  4.   

    主要是用到以下API函数:
    Public Type RECT
      Left As Long
      Top As Long
      Right As Long
      Bottom As Long
    End TypePublic Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Const GWL_EXSTYLE = (-20)
    Public Const WS_EX_TOOLWINDOW = &H80
      

  5.   

    还是有一个问题暂时无法解决:
    1。SetParent ListBox.hwnd,0之后下拉的控件无法得到输入焦点。
    2。当用户点击窗体时,无法让下接控件关闭。