求助:如何使窗体在最顶层,标题栏只含有关闭按钮,窗体不可以移动,同时显示开始菜单栏

解决方案 »

  1.   

    '窗体在最顶层'窗体居最前面的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'初始化:SetWindowPos,设置窗体总在最前面所需要的常量Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOZORDER = &H4
    Private Const SWP_NOREDRAW = &H8
    Private Const SWP_NOACTIVATE = &H10
    Private Const SWP_FRAMECHANGED = &H20
    Private Const SWP_SHOWWINDOW = &H40
    Private Const SWP_NOCOPYBITS = &H80
    Private Const SWP_NOOWNERZORDER = &H200
    Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED
    Private Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
    Private Const HWND_TOP = 0
    Private Const HWND_BOTTOM = 1
    Private Const HWND_TOPMOST = -1
    Private Const HWND_NOTOPMOST = -2'设定窗体位居最前面的过程
    Public Sub SetOnTop(frm As Object, bSetting As Boolean)
    If bSetting Then
       '将窗体设置成总在最前
       SetWindowPos frm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    Else
       '取消窗体总在最前设置
       SetWindowPos frm.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    End If
    End Sub使用方法:
    SetOnTop frmMain,True   '置顶
    SetOnTop frmMain,False   '取消置顶
      

  2.   

    '标题栏只含有关闭按钮把Form的BorderStyle属性设置为1-FixedSingle
    '窗体不可以移动把窗体的Moveable属性设置为False
      

  3.   

    '显示开始菜单栏
    Option ExplicitPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPublic Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPublic Function ShowStartButton()
           Dim Handle As Long, FindClass As Long
           FindClass& = FindWindow("Shell_TrayWnd", "")
           Handle& = FindWindowEx(FindClass&, 0, "Button", vbNullString)
           ShowWindow Handle&, 1
    End FunctionPrivate Sub Command2_Click() '显示开始菜单
           ShowStartButton
         End Sub
      

  4.   

    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 Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Sub Form_Load()
        '窗体置顶
        SetWindowPos Me.hwnd, -1&, 0&, 0&, 0&, 0&, 3&
        '标题栏只含有关闭按钮:把窗体的BorderStyle设为3
        '窗体不可以移动:把窗体的Moveable设为False
        '弹出开始菜单
        keybd_event 91, 0, 0, 0
        keybd_event 91, 0, 2, 0
    End Sub