菜鸟求教 :API TrackPopupMenu 第二个参数的用法。
菜鸟求教 :API TrackPopupMenu 第二个参数的用法。
有一段作品代码如下:
MenuSelected = TrackPopupMenu(HwndPopupMenu, &H0 Or &H100, PI.X, PI.y, 0, Me.hwnd, vbNullString)
'Public Const TPM_CENTERALIGN=&H4& TPM_LEFTALIGN=&H0& TPM_RIGHTALIGN=&H8& TPM_LEFTBUTTON=&H0&_ TPM_RIGHTBUTTON=&H2&
上面这段代码里,关于第二个参数谁能帮我解释一下?下面的注释是我查到的全部参数值,看不懂为什么还有&H100,什么意思?
另外代码里的写法把常数值里第二个"&"省略了。这又是为何?
[解决办法]
- VB code
Private 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
[解决办法]
- VB code
'Example Name:TrackPopupMenuConst 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&Private Type POINTAPI x As Long y As LongEnd TypePrivate Declare Function CreatePopupMenu Lib "user32" () As LongPrivate 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 LongPrivate Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As LongPrivate Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As LongPrivate Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As LongPrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongDim hMenu As LongPrivate Sub Form_Load() 'KPD-Team 1998 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net 'Create an empty popupmenu hMenu = CreatePopupMenu() 'Append a few menu items AppendMenu hMenu, MF_STRING, ByVal 0&, "Hello !" AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, ByVal 0&, "Testing ..." AppendMenu hMenu, MF_SEPARATOR, ByVal 0&, ByVal 0& AppendMenu hMenu, MF_CHECKED, ByVal 0&, "TrackPopupMenu"End SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) Dim Pt As POINTAPI 'Get the position of the mouse cursor GetCursorPos Pt If Button = 1 Then 'Show our popupmenu TrackPopupMenu hMenu, TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0& Else 'Show our form's default popup menu TrackPopupMenu GetSystemMenu(Me.hwnd, False), TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0& End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer) 'Destroy our menu DestroyMenu hMenuEnd Sub