这个是窗体始终在前的代码
Me.Show
Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3) 
原来的是放在form事件里的。
现在我想用的checkbox代替。
可惜的是去了勾,不能取消事件。
求助高手帮助。希望能列出代码,谢谢。方便学习。

解决方案 »

  1.   

    if checkbox.Value = 0 Then Call SetWindowPos(Me.hwnd, -2, 0, 0, 0, 0, 3)
      

  2.   

    在 CheckBox 的 Click 事件里面写:
    If checkbox1.Checked = False Then 
        Call SetWindowPos(Me.hwnd, -2, 0, 0, 0, 0, 3)
    Else
        Call SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3)
    End If
      

  3.   

    #2还要定义?
    checkbox1.Checked ?
      

  4.   

    下面这个是在模块里的
    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
    '以上为API函数声明
    Public Const HWND_TOPMOST = -1
    Public Const SWP_NOMOVE = &H2
    Public Const SWP_NOSIZE = &H1
    Public Const SWP_FRAMECHANGED = &H20
    'The frame changed: send WM_NCCALCSIZE
    Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED
    '以上为程序中用到的常量Public Const HWND_BOTTOM = 1
    Public Const HWND_BROADCAST = &HFFFF&
    Public Const HWND_DESKTOP = 0
    Public Const HWND_NOTOPMOST = -2
    Public Const HWND_TOP = 0
    Public Const SWP_HIDEWINDOW = &H80
    Public Const SWP_NOACTIVATE = &H10
    Public Const SWP_NOCOPYBITS = &H100
    Public Const SWP_NOOWNERZORDER = &H200
    'Don't do owner Z ordering
    Public Const SWP_NOREDRAW = &H8
    Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
    Public Const SWP_NOZORDER = &H4
    Public Const SWP_SHOWWINDOW = &H40
    '以上常量声明在程序中没有使用
    '可以试着在调用SetWindowPos函数时使用这些常量或它们的组合
    '得到其他效果
    Public Const Flags = SWP_DRAWFRAME Or SWP_NOMOVE Or SWP_NOSIZE这是在checkbox的事件里的
    Private Sub Check1_Click()
     If Check1.Value = 1 Then
        Call SetWindowPos(Me.hwnd, HWND_TOPMOST, _
                            0, 0, 0, 0, Flags)
     Else
        Call SetWindowPos(Me.hwnd, HWND_NOTOPMOST, _
                            0, 0, 0, 0, Flags) End If
    End Sub