复制菜单

'---------------------------------------------------------------------------------------
' Procedure : CopyMenu
' DateTime  : 2005-9-21 19:17
' Author    : Lingll
' Purpose   : 复制菜单
'---------------------------------------------------------------------------------------
Public Function CopyMenu(hMnuSrc&, hMnuDest&) As Boolean
On Error Resume Next

Dim rtn As Boolean
Dim i&, tcnt&
Dim tState&, tId&, tString$, tSub&, tNewSub&

If hMnuSrc = 0 Then
    CopyMenu = False
    Exit Function
End If

If hMnuDest = 0 Then
    hMnuDest = CreatePopupMenu()
    If hMnuDest = 0 Then
        CopyMenu = False
        Exit Function
    End If
Else
    tcnt = GetMenuItemCount(hMnuDest)
    For i = tcnt - 1 To 0 Step -1
        DeleteMenu hMnuDest, i, MF_BYPOSITION
    Next i
End If

tcnt = GetMenuItemCount(hMnuSrc)
For i = 0 To tcnt - 1
    tState = GetMenuState(hMnuSrc, i, MF_BYPOSITION)
   
    If (tState And MF_POPUP) = MF_POPUP Then
        tString = GetMenuTextVb(hMnuSrc, i)
       
        tSub = GetSubMenu(hMnuSrc, i)
        tNewSub = CreatePopupMenu()
       
        Debug.Print Hex(tState)
        tState = (&HFF& And tState)
        Debug.Print Hex(tState)
       
        AppendMenu hMnuDest, tState, tNewSub, tString
        Call CopyMenu(tSub, tNewSub)
    ElseIf (tState And MF_SEPARATOR) = MF_SEPARATOR Then
        AppendMenu hMnuDest, MF_SEPARATOR, 0, vbNullString
    Else
        tString = GetMenuTextVb(hMnuSrc, i)
        tId = GetMenuItemID(hMnuSrc, i)
        AppendMenu hMnuDest, tState, tId, tString
    End If
   
Next i

CopyMenu = True

End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值