• Welcome to PlanetSquires Forums.
 

Creating and displaying popup menu

Started by Paul Squires, October 31, 2009, 09:36:17 PM

Previous topic - Next topic

Paul Squires

A common task in programming is to display a popup menu when you right-click on some area of a control. There are various ways to do this but responding to the WM_CONTEXTMENU message is usually a good approach. Creating the popup menu is pretty easy. However, you do need to define your own equates to identify each menu option.

Check out this simple example that displays a menu when right-clicked on a ListView.


%IDC_POPUPMENU_OPTION1 = %WM_USER + 100
%IDC_POPUPMENU_OPTION2 = %WM_USER + 101
%IDC_POPUPMENU_OPTION3 = %WM_USER + 102

'--------------------------------------------------------------------------------
Function FORM1_CUSTOM ( _
                      hWndForm      As Dword, _  ' handle of Form
                      wMsg          As Long,  _  ' type of message
                      wParam        As Dword, _  ' first message parameter
                      lParam        As Long   _  ' second message parameter
                      ) As Long

    Static hPopupMenu As Dword
   
   
    Select Case wMsg
   
    Case %WM_CONTEXTMENU
   
       If wParam = HWND_FORM1_LISTVIEW1 Then
          If hPopupMenu Then DestroyMenu hPopupMenu
         
          hPopupMenu = CreatePopupMenu()
              AppendMenu hPopupMenu, %MF_STRING, %IDC_POPUPMENU_OPTION1, "Option1"
              AppendMenu hPopupMenu, %MF_STRING, %IDC_POPUPMENU_OPTION2, "Option2"
              AppendMenu hPopupMenu, %MF_SEPARATOR, 0, ""
              AppendMenu hPopupMenu, %MF_STRING, %IDC_POPUPMENU_OPTION3, "Option3"
   
          TrackPopupMenu hPopupMenu, %TPM_LEFTALIGN Or %TPM_LEFTBUTTON, _
                                       LoWrd(lParam), HiWrd(lParam), 0, hWndForm, ByVal %Null
       End If
       
   End Select
   
   
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

Paul Squires
PlanetSquires Software
WinFBE Editor and Visual Designer