Const HWND_TOPMOST = -1     ' 始终在最上面
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1       '使用当前尺寸
Const SWP_NOMOVE = &H2       '使用当前位置
Const SWP_NOACTIVATE = &H10  '不激活该窗口
Const SWP_SHOWWINDOW = &H40  '显示窗口Private Declare Sub 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)Private Sub Form_Activate()
    SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
    ''Me.hWnd: 窗口句柄
    '0,0,0,0: 窗口位置和尺寸,一般都为后面的参数忽略,所以设为0
End Sub

解决方案 »

  1.   


        怎样使我的程序总处于屏幕最前方?(Always on top)
     
     如果你想让你的程序处于前方,可以使用以下代码: Form1.ZOrder  配合计时器使用,每隔一段很小的时间间隔调用这种方法可以使窗体Form1处于屏幕前方,但是用户还是可能使别的窗体在短暂的时间里处于Form1的上方。所以这种方法并不能使窗体真正的实现Always on top,而要真正的Always on top可以使用API函数SetWindowPos,代码如下: '声明函数: Declare Function SetWindowPos Lib "user32" _(ByVal h%, ByVal hb%, ByVal x%, ByVal y%, _ByVal cx%,ByVal cy%,ByVal f%) As Integer Global Const SWP_NOMOVE = 2 Global Const SWP_NOSIZE = 1 Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Global Const HWND_TOPMOST = -1 Global Const HWND_NOTOPMOST = -2 '把窗体放在最前面:  res% = SetWindowPos (Form1.hWnd, HWND_TOPMOST, _0, 0, 0, 0, FLAGS) '如果res%=0, 就产生错误  '使窗体恢复普通模式:res% = SetWindowPos (Form1.hWnd, HWND_NOTOPMOST, _0, 0, 0, 0, FLAGS)
     
       
     
      
     
      

  2.   


        怎样使我的程序总处于屏幕最前方?(Always on top)
     
     如果你想让你的程序处于前方,可以使用以下代码: Form1.ZOrder  配合计时器使用,每隔一段很小的时间间隔调用这种方法可以使窗体Form1处于屏幕前方,但是用户还是可能使别的窗体在短暂的时间里处于Form1的上方。所以这种方法并不能使窗体真正的实现Always on top,而要真正的Always on top可以使用API函数SetWindowPos,代码如下: '声明函数: Declare Function SetWindowPos Lib "user32" _(ByVal h%, ByVal hb%, ByVal x%, ByVal y%, _ByVal cx%,ByVal cy%,ByVal f%) As Integer Global Const SWP_NOMOVE = 2 Global Const SWP_NOSIZE = 1 Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Global Const HWND_TOPMOST = -1 Global Const HWND_NOTOPMOST = -2 '把窗体放在最前面:  res% = SetWindowPos (Form1.hWnd, HWND_TOPMOST, _0, 0, 0, 0, FLAGS) '如果res%=0, 就产生错误  '使窗体恢复普通模式:res% = SetWindowPos (Form1.hWnd, HWND_NOTOPMOST, _0, 0, 0, 0, FLAGS)
     
       
     
      
     
      

  3.   

    在Module里聲明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)
    在form里Private Sub Form_Load()
    rtn = SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3)
    End Sub
      

  4.   

    '以下放到标准模块:
    '---------------------设置Windows处于TOp的API
    Public 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
    Const SWP_NOMOVE = &H2 '不更动目前视窗位置
    Const SWP_NOSIZE = &H1 '不更动目前视窗大小
    Const HWND_TOPMOST = -1 '设定为最上层
    Const HWND_NOTOPMOST = -2 '取消最上层设定
    Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
    '0.将 APP 视窗设定成永远保持在最上层
    Public Sub FrmOnTop(Frm As Form, OnTop As Boolean)
    If OnTop = True Then
        SetWindowPos Frm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
    Else
        '取消最上层设定
        SetWindowPos Frm.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS
    End If
    End Sub使用方法:
    '以下放到窗体:
    form_load:
    FrmOnTop(form1,true)
    form_unload:
    FrmOnTop(form1,false)
      

  5.   

    .zorder 0
    也是可以得     以上回答,仅代表个人观点   大家静静地,心平气和地做技术吧!   我是小山,我喜欢VB,现在学习C#和.net   欢迎您使用: SourceCode Explorer(源代码数据库)
             来自: Http://www.dapha.net
         个人主页: Http://Shawls.Yeah.Net
           E-Mail: [email protected]
               QQ: 9181729
      

  6.   

    .zorder 0
    也是可以得     以上回答,仅代表个人观点   大家静静地,心平气和地做技术吧!   我是小山,我喜欢VB,现在学习C#和.net   欢迎您使用: SourceCode Explorer(源代码数据库)
             来自: Http://www.dapha.net
         个人主页: Http://Shawls.Yeah.Net
           E-Mail: [email protected]
               QQ: 9181729
      

  7.   

    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 mbOnTop As Boolean
    Private Property Let OnTop(Setting As Boolean)
    If Setting Then
    SetWindowPos hwnd, -1, 0, 0, 0, 0, &H2 Or &H1
    Else
    SetWindowPos hwnd, -2, 0, 0, 0, 0, &H2 Or &H1
    End If
    mbOnTop = Setting
    End Property在上面 
    ontop =true不再上面
    ontop=false
      

  8.   

    如果只想做个查询窗体不用这么麻烦的。
    假如form1是主窗体,form2是查询窗体,只要form2.show 0 ,form1行了。
    用SetWindowPos的话,你的查询窗体会档住其它程序的窗体。
      

  9.   

    *API函数声明
    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_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
    Private Const HWND_TOPMOST = -1
    Private Const HWND_NOTOPMOST = -2
    以上放在form的申明部分
    在form历来loads里写
    SetWindowPos me.hWnd,HWND_TOPMOST,0,0,0,0, SWP_NOSIZE
      

  10.   

    上面都写这么多编,我就不好意思在抄一遍了,反正两种方法都可以,不过我还是比较赞成用,setwindowpos函数的