Popup menus

Popup menus

Postby Enrico Maria Giordano » Sat May 13, 2006 3:17 pm

MENU command is not implemented. How can I get a right click popup menu?

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8338
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Popup menus

Postby Pier Luigi » Wed Aug 23, 2006 8:09 am

EMG try this:

Code: Select all  Expand view
// FiveWin for Pocket PC - Using popup menus

#include "FWCE.ch"

#define MF_ENABLED         0

#define TPM_VERTICAL  0x0040
#define TPM_RETURNCMD 0x0100

#define MFT_SEPARATOR 0x0800

#define MF_CHECKED    0x0008
#define MF_UNCHECKED  0x0000
#define MF_POPUP      0x0010

//-----------------------------------------------------------------------------------------------------//

FUNCTION Main()

   LOCAL oWnd

   DEFINE WINDOW oWnd TITLE "Popup menu"

      oWnd:bLClicked:={ | nRow, nCol | PopupMenu( oWnd, nRow+28, nCol ) }

   ACTIVATE WINDOW oWnd

RETURN ( nil )

//-----------------------------------------------------------------------------------------------------//

STATIC FUNCTION PopupMenu( oWnd, nRow, nCol )

   LOCAL nIdSelect
   LOCAL hMenu := CreatePopupMenu()
   LOCAL hSubMenu := CreatePopupMenu()

   AppendMenu( hMenu, MF_ENABLED, 10, "One" )

   AppendMenu( hSubMenu, MF_ENABLED, 11, "Submenu 1")
   AppendMenu( hSubMenu, MF_ENABLED, 12, "Submenu 2")

   AppendMenu( hSubMenu, MFT_SEPARATOR)

   AppendMenu( hSubMenu, MF_ENABLED, 13, "Submenu 3")

   AppendMenu( hMenu, MF_POPUP, hSubMenu, "Two" )

   AppendMenu( hMenu, MFT_SEPARATOR)

   AppendMenu( hMenu, MF_ENABLED, 14, "Three")

   CheckMenuItem( hMenu, 14, MF_CHECKED )

   CheckMenuItem( hSubMenu, 13, MF_CHECKED )

   nIdSelect := TrackPopupMenuEx( hMenu, TPM_RETURNCMD, nRow, nCol, oWnd:hWnd )

   IF nIdSelect == 10

      MsgInfo ( "One" )

   ELSEIF nIdSelect == 11

      MsgInfo ( "Submenu 1" )

   ELSEIF nIdSelect == 12

      MsgInfo ( "Submenu 2" )

   ELSEIF nIdSelect == 13

      MsgInfo ( "Submenu 3" )

   ELSEIF nIdSelect == 14

      MsgInfo ( "Three" )

   ENDIF

   DestroyMenu(hMenu)

RETURN nil

//-----------------------------------------------------------------------------------------------------//

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

LPWSTR AnsiToWide( LPSTR );

#define IF(x,y,z) ((x)?(y):(z))

HB_FUNC( CREATEPOPUPMENU )
{
   hb_retnl( ( LONG ) CreatePopupMenu() );
}

HB_FUNC( APPENDMENU )
{
   LPWSTR pW = AnsiToWide( hb_parc( 4 ) );

   hb_retl( AppendMenu( ( HMENU ) hb_parnl( 1 ), ( UINT ) hb_parnl( 2 ), hb_parnl( 3 ),
                          IF( ISCHAR( 4 ), pW, ( LPWSTR ) hb_parnl( 4 ) ) ) );
   hb_xfree( pW );
}

HB_FUNC( TRACKPOPUPMENUEX )
{
   hb_retnl( ( LONG ) TrackPopupMenuEx( ( HMENU ) hb_parnl( 1 ), hb_parni( 2 ), hb_parni( 4 ),
               hb_parni( 3 ), ( HWND ) hb_parni( 5 ), NULL ) );
}

HB_FUNC( DESTROYMENU )
{
   hb_retl( DestroyMenu( ( HMENU ) hb_parnl( 1 ) ) );
}

HB_FUNC( CHECKMENUITEM )
{
   hb_retnl( ( LONG ) CheckMenuItem( ( HMENU ) hb_parnl( 1 ), hb_parni( 2 ), hb_parni( 3 ) ) );
}

#pragma ENDDUMP


Regards,
Pier luigi
User avatar
Pier Luigi
 
Posts: 58
Joined: Fri Oct 07, 2005 6:30 am
Location: Rome - Italy

Re: Popup menus

Postby Enrico Maria Giordano » Wed Aug 23, 2006 9:50 am

Great! The only problem is that the menu pops up immediately while it should shows up itself only if the mouse button is kept pressed.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8338
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia


Return to FiveWin for Pocket PC

Who is online

Users browsing this forum: No registered users and 6 guests