Hi All,
Are there any samples around for how to use a dropdown list on a toolbar?
Something like this....
%IDC_POPUPMENU_OPTION1 = %WM_USER + 100
%IDC_POPUPMENU_OPTION2 = %WM_USER + 101
%IDC_POPUPMENU_OPTION3 = %WM_USER + 102
'--------------------------------------------------------------------------------
Function FORM1_WM_NOTIFY ( _
hWndForm As Dword, _ ' handle of Form
idCtrl As Dword, _ ' control ID
ByVal pNMHDR As NMHDR Ptr _ ' pointer to NMHDR structure
) As Long
Local nmtb As TBNOTIFY Ptr
Local pt As PointApi
Static hPopup As Dword
nmtb = pNMHDR
If @nmtb.hdr.Code = %TBN_DROPDOWN Then
' Create and show the dropdown menu
If hPopup Then DestroyMenu(hPopup)
hPopup = CreatePopupMenu()
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION1, "Option 1"
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION2, "Option 2"
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION3, "Option 3"
GetCursorPos pt
TrackPopupMenu hPopup, %TPM_LEFTALIGN Or %TPM_LEFTBUTTON, _
pt.x, pt.y, 0, hWndForm, ByVal %Null
End If
End Function
'--------------------------------------------------------------------------------
Function FORM1_WM_COMMAND ( _
hWndForm As Dword, _ ' handle of Form
hWndControl As Dword, _ ' handle of Control
wNotifyCode As Long, _ ' notification code
wID As Long _ ' item, control, or accelerator identifer
) As Long
Select Case wID
Case %IDC_POPUPMENU_OPTION1
MsgBox "option 1 selected"
Case %IDC_POPUPMENU_OPTION2
MsgBox "option 2 selected"
Case %IDC_POPUPMENU_OPTION3
MsgBox "option 3 selected"
End Select
End Function
In case your toolbar has more than one dropdown button you can use code liek the following:
%IDC_POPUPMENU_OPTION11 = %WM_USER + 100
%IDC_POPUPMENU_OPTION12 = %WM_USER + 101
%IDC_POPUPMENU_OPTION13 = %WM_USER + 102
%IDC_POPUPMENU_OPTION21 = %WM_USER + 103
%IDC_POPUPMENU_OPTION22 = %WM_USER + 104
%IDC_POPUPMENU_OPTION23 = %WM_USER + 105
'--------------------------------------------------------------------------------
Function FORM1_WM_NOTIFY ( _
hWndForm As Dword, _ ' handle of Form
idCtrl As Dword, _ ' control ID
ByVal pNMHDR As NMHDR Ptr _ ' pointer to NMHDR structure
) As Long
Local nmtb As TBNOTIFY Ptr
Local pt As PointApi
Static hPopup As Dword
nmtb = pNMHDR
If @nmtb.hdr.Code = %TBN_DROPDOWN Then
' Create and show the dropdown menu
If hPopup Then DestroyMenu(hPopup)
hPopup = CreatePopupMenu()
Select Case @nmtb.iItem
Case IDC_FORM1_TOOLBAR1_BUTTON1
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION11, "Button 1 Option 1"
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION12, "Button 1 Option 2"
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION13, "Button 1 Option 3"
Case IDC_FORM1_TOOLBAR1_BUTTON2
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION21, "Button 2 Option 1"
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION22, "Button 2 Option 2"
AppendMenu hPopup, %MF_STRING, %IDC_POPUPMENU_OPTION23, "Button 2 Option 3"
End Select
GetCursorPos pt
TrackPopupMenu hPopup, %TPM_LEFTALIGN Or %TPM_LEFTBUTTON, _
pt.x, pt.y, 0, hWndForm, ByVal %Null
End If
End Function
'--------------------------------------------------------------------------------
Function FORM1_WM_COMMAND ( _
hWndForm As Dword, _ ' handle of Form
hWndControl As Dword, _ ' handle of Control
wNotifyCode As Long, _ ' notification code
wID As Long _ ' item, control, or accelerator identifer
) As Long
Select Case wID
Case %IDC_POPUPMENU_OPTION11
MsgBox "button 1 option 1 selected"
Case %IDC_POPUPMENU_OPTION12
MsgBox "button 1 option 2 selected"
Case %IDC_POPUPMENU_OPTION13
MsgBox "button 1 option 3 selected"
Case %IDC_POPUPMENU_OPTION21
MsgBox "button 2 option 1 selected"
Case %IDC_POPUPMENU_OPTION22
MsgBox "button 2 option 2 selected"
Case %IDC_POPUPMENU_OPTION23
MsgBox "button 2 option 3 selected"
End Select
End Function
Perfect, cheers Paul.