我把窗体的样式改为none,我编辑了菜单,然后在listveiw里显示右键菜单,可是无论如何窗体的样式都有边框,不知道怎么才能既有右键菜单又可以使窗体为none.在线等高手指点!

解决方案 »

  1.   

    1. 用API创建菜单
    2. 另建一窗体frmMenu, 在这个窗体上添加菜单mnuPop, 要显示菜单时弹出frmMenu.mnuPop即可.
      

  2.   

    Option ExplicitConst MF_CHECKED = &H8&
    Const MF_APPEND = &H100&
    Const TPM_LEFTALIGN = &H0&
    Const MF_DISABLED = &H2&
    Const MF_GRAYED = &H1&
    Const MF_SEPARATOR = &H800&
    Const MF_STRING = &H0&
    Const TPM_RETURNCMD = &H100&
    Const TPM_RIGHTBUTTON = &H2&
    Private Type POINTAPI
           x  As Long
           y  As Long
    End Type
    Private Declare Function CreatePopupMenu Lib "user32" () As Long
    Private Declare Function TrackPopupMenuEx Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal HWnd As Long, ByVal lptpm As Any) As Long
    Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
    Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Dim hMenu   As Long'改成listview的mouseup事件即可
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim Pt   As POINTAPI
        Dim ret   As Long
           
        If Button = vbRightButton Then
            hMenu = CreatePopupMenu()
            AppendMenu hMenu, MF_STRING, 1, "Hello  !"
            AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, 2, "Testing  ..."
            AppendMenu hMenu, MF_SEPARATOR, 3, ByVal 0&
            AppendMenu hMenu, MF_CHECKED, 4, "TrackPopupMenu"
            GetCursorPos Pt
            ret = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD Or TPM_RIGHTBUTTON, Pt.x, Pt.y, Me.HWnd, ByVal 0&)
            DestroyMenu hMenu
            Select Case ret
            Case 1
                MsgBox "Hello  !"
            Case 4
                MsgBox "TrackPopupMenu"
            End Select
        End If
    End Sub
      

  3.   

    // to  BlueBeer(1win) 哈哈!只要能实现,业余点又怎么样?再说了!软件使用者不看源程序也看不出来啊!
      

  4.   

    同意  songyaowu(韧恒) 兄Private Sub listveiw1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbRightButton And listveiw1.ListItems.Count > 0 Then'如果是鼠标右键
            Dim myMnu As Menu
            Set myMnu = frmMenu.mnuTest'指向 另外一个叫frmMenu窗口的mnuTest 菜单
            PopupMenu myMnu'弹出
        End If
    End Sub
      

  5.   

    创建菜单的时候有个可见属性,去掉那个钩就可以了。
    但这样有可能窗体边框去不掉。所以在另一个From里建菜单比较好。
      

  6.   

    3ks!!!!!!songyaowu(韧恒),leolan(史留香)