怎样使一个窗口始终在所有窗口前,但可在其他窗口作其他事情?谢了!!

解决方案 »

  1.   

    要用API函数SetWindowsPos实现,实例你可以搜索以前的帖子,有很多的。
      

  2.   

    这个也许就是了
    利用API函数SetWindowPos可以实现窗体位于最上层。
        BOOL SetWindowPos(
            HWND hWnd,   //窗体句柄
            HWND hWndInsertAfter,  //放置窗体位置的句柄
            int X,   //窗体水平位置坐标
            int Y,  //窗体竖直位置坐标
            int cx, //窗体宽度
            int cy, //窗体高度
            UINT cFlags)   //窗体位置标识
    通过将参数hWndInserAfter设置为HWND_TOPMOST,就可使窗体始终位于最上层。启动VB,新建一标准EXE工程,双击窗体,添加如下事件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 HWND_TOPMOST = -1
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOSIZE = &H1
    Private Sub Form_Load()
    t = SetWindowPos(Form1.hwnd, _
    HWND_TOPMOST, _
    Form1.Left, _
    Form1.Top, _
    Form1.Width, _
    Form1.Height, _
    SWP_NOMOVE Or SWP_NOSIZE)
    End SubSWP_NOMOVE '保持窗体当前位置,忽略X和Y参数
    SWP_NOSIZE '保持窗体当前尽寸,忽略cx和cy参数
       
    --------------==========================================================----------------
    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 HWND_TOPMOST = -1
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOSIZE = &H1
    Private Sub Form_Load()
    t = SetWindowPos(Form1.hwnd, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height, SWP_NOMOVE Or SWP_NOSIZE)
    End Sub
      

  3.   

    总之要保持窗体为无模式,且Layer=0。