举个例子.我在窗体中用菜单编缉器定义了菜单:顶级 窗口.1级 打开的窗口.下面的就要用api自动添加菜单,该如何添加.并响应相关事件

解决方案 »

  1.   

    Public Declare Function CreatePopupMenu Lib "user32" () 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, ByVal lprc As Any) 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 DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
    Public Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long    hMenu = CreatePopupMenu()    AppendMenu hMenu, MF_STRING, ByVal 21, ChangePackageCaption    iClick = TrackPopupMenu(hMenu, TPM_LEFTALIGN Or TPM_NONOTIFY Or TPM_RETURNCMD, pt.x, pt.y, 0, Me.hwnd, ByVal 0&)    EnableMenuItem hMenu, ByVal 21, MF_BYCOMMAND Or MF_GRAYED    DestroyMenu hMenu
      

  2.   

    可以不用API,使用数组菜单项(设置一个菜单项的索引为0),再用Load添加菜单项就行了,这样窗口就可以接收菜单事件了,你只需要根据Index分别处理即可。
      

  3.   

    AppendMenu 。。指定wIDNewItem的值
    然后在SetWindowLong指定的回调函数中处理WM_COMMAND消息。(判断wParam的值来确定是不是某菜单)
      

  4.   

    能举一个详例吗?我对api不是太熟悉
      

  5.   

    删除指定的菜单又改怎么删除呢?因为我只想删除用api新增的菜单.
      

  6.   

    我想删除我用api新菜的菜单,该如何删除呢???