天天看點

Windows菜單函數 - ModifyMenu/ModifyMenuBynum

VB聲明

Declare Function ModifyMenu& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As String)

Declare Function ModifyMenuBynum& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Long)

說明
改變菜單條目。在vb裡這個函數做出的許多改變都會有效的執行,但不能由vb菜單對象反映出來
傳回值
Long,非零表示成功,零表示失敗。會設定GetLastError
參數表
參數 類型及說明
hMenu Long,菜單句柄
nPosition Long,欲改變的菜單條目的辨別符。如在wFlags參數中指定了MF_BYCOMMAND,這個參數就代表欲改變的菜單條目的指令ID。如設定的是MF_BYPOSITION,這個參數就代表菜單條目在菜單中的位置(第一個條目的位置為零)
wFlags Long,一系列常數标志的組合。詳見菜單常數标志表
wIDNewItem Long,指定菜單條目的新指令ID。如在wFlags參數中指定了MF_POPUP标志,就應是一個彈出式菜單的句柄
lpString String或Long,如在wFlags參數中指定了MF_STRING标志,就代表欲設定到菜單的字串。如設定的是MF_BITMAP,就代表一個Long變量,其中包含了一個位圖句柄。如設定的是MF_OWNERDRAW,那麼這個值就會包括到DRAWITEMSTRUCT和MEASUREITEMSTRUCT結構中,并由windows在條目需要重畫的時候發出
注解
标志的下述組合形式是不允許的:MF_BYCOMMAND和MF_BYPOSITION;MF_CHECKED和MF_UNCHECKED;MF_MENUBARBREAK和MF_MENUBREAK;MF_DISABLED,MF_ENABLED和MF_GRAYED;MF_BITMAP,MF_STRING,MF_OWNERDRAW和MF_SEPARATOR
菜單常數标志表
MF_BITMAP 菜單條目是一幅位圖。一旦設入菜單,這幅位圖就絕對不能删除。是以不應該使用由vb的image屬性傳回的值
MF_BYCOMMAND 菜單條目由菜單的指令ID指定
MF_BYPOSITION 菜單條目由條目在菜單中的位置決定。零代表菜單中的第一個條目
MF_CHECKED 檢查指定的菜單條目。不能與vb的checked屬性相容
MF_DISABLED 禁止指定的菜單條目。不與vb的enabled屬性相容
MF_ENABLED 允許指定的菜單條目。不與vb的enabled屬性相容
MF_GRAYED 禁止指定的菜單條目,并用淺灰色描述它。不與vb的enabled屬性相容
MF_MENUBARBREAK 在彈出式菜單中,将指定的條目放置于一個新列,并用一條垂直線分隔不同的列
MF_MENUBREAK 在彈出式菜單中,将指定的條目放置于一個新列。在頂級菜單中,将條目放置到一個新行
MF_OWNERDRAW 建立一個物主繪圖菜單(由您設計的程式負責描繪每個菜單條目)
MF_POPUP 将一個彈出式菜單置于指定的條目。可用于建立子菜單及彈出式菜單
MF_SEPARATOR 在指定的條目處顯示一條分隔線
MF_STRING 在指定的條目處放置一個字串。不與vb的caption屬性相容
MF_UNCHECKED 檢查指定的條目。不能與vb的checked屬性相容

繼續閱讀