小弟刚接触vb忘各位大哥指教另外谁有动态树形菜单得代码啊谢谢

解决方案 »

  1.   

    例如在 form1的 ole中 显示form2
      

  2.   

    '第一个问题
    '在窗体1上用cmd代码激活窗体2
    Private Sub Command1_Click()
        Load Form2
        Form2.Show
    End Sub'第2个问题
    '模块代码
    Option ExplicitPublic Declare Function CreateMenu Lib "user32" () As Long
    Public 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
    Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hWnd As Long, lprc As RECT) As Long
    Public Declare Function CreatePopupMenu Lib "user32" () As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Public Const MF_STRING = &H0&
    Public Const MF_POPUP = &H10&
    Public Const WM_USER = &H400
    Public Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
    Public Type POINTAPI
            x As Long
            y As Long
    End Type
    Public Const GWL_WNDPROC = (-4)
    Public hMenu As Long
    Public hmenupopup As Long
    Public result As Long
    Public oldwinproc As Long
    Public Const WM_COMMAND = &H111Public Function OnMenu(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Select Case wMsg
            Case WM_COMMAND
                Select Case wParam
                    Case 300
                        MsgBox "u select new", vbInformation, "hello, world!"
                    Case 301
                        MsgBox "u select save", vbInformation, "hello, world!"
                    Case 302
                        MsgBox "u select save as", vbInformation, "hello, world!"
                End Select
        End Select
        OnMenu = CallWindowProc(oldwinproc, hWnd, wMsg, wParam, lParam)
    End Function'程序代码
    Private Sub Form_Load() '窗体Load时加载菜单
        hMenu = CreateMenu()
        hmenupopup = CreatePopupMenu()
        result = AppendMenu(hmenupopup, MF_STRING, 300, "&New")
        result = AppendMenu(hmenupopup, MF_STRING, 301, "&Save")
        result = AppendMenu(hmenupopup, MF_STRING, 302, "Save &As...")
        result = AppendMenu(hMenu, MF_POPUP, hmenupopup, "&File")
        oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
        SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf OnMenu
    End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim r As RECT
        Dim p As POINTAPI
        If Button = vbRightButton Then '如果点击右键弹出菜单
            GetCursorPos p
            TrackPopupMenu hmenupopup, 0, p.x, p.y, 0, Me.hWnd, r
        End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        SetWindowLong Me.hWnd, GWL_WNDPROC, oldwinproc
    End Sub
      

  3.   

    sorry,发得晚了点,第一问没有看清楚.请继续等楼下.OLE应该做不到你所说的.
      

  4.   

    楼上的大虾 先谢谢你我的意思是 1 ,在第一个窗体的某个区域上 例如:ole中 显示另外一个窗体第2个问题我的意思是 
    树形菜单,
    用treeview控件对应数据库无所谓
      

  5.   

    说白了我就是想用一个treevew做一个树形的菜单然后在form中方一个控件
    用来显示菜单调
    用的窗体
      

  6.   

    1问题:我有一个是在图片框中显示窗口
    2问题:我是用数据库显示TREEVIEW
    不知道你要不要的着,要的话加我QQ:26743670
      

  7.   

    用setparent这个api函数即可,具体的用法你自己搜索一下吧:)
      

  8.   

    例如form1 ,form2form1是主窗体当我调用form2时,form2不是弹出来
    而是出现在form1中得 某个容器里
      

  9.   

    SetParent VB声明 
    Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long 
    说明 
    指定一个窗口的新父(在vb里使用:利用这个函数,vb可以多种形式支持子窗口。例如,可将控件从一个容器移至窗体中的另一个。用这个函数在窗体间移动控件是相当冒险的,但却不失为一个有效的办法。如真的这样做,请在关闭任何一个窗体之前,注意用SetParent将控件的父设回原来的那个) 
    返回值 
    Long,前一个父窗口的句柄 
    参数表 
    参数 类型及说明 
    hWndChild Long,子窗口的句柄 
    hWndNewParent Long,hWndChild的新父 
    注解 
    可用这个函数在运行期将vb控件置入容器控件内部(比如将一个按钮设成图象或窗体控件的子窗口),或者将控件从一个容器控件移至另一个。控件移至另一个父后,它的位置将由新父的坐标系统决定。这样一来,有必要重新规定控件的位置,使其能在目标位置显示出来
     
      

  10.   

    是用picturebox控件来显示么?什么反映也没有啊