Construct the menu using the method NewL()in the class CAknStylusPopUpMenu.
The last parameter in the constructor is a pointer to the preview pop-up from which the stylus pop-up menu is launched. If you are not constructing a pop-up menu for a preview pop-up, set the parameter as NULL.
To construct the menu from a resource, use the method CAknStylusPopUpMenu::ConstructFromResourceL().
The following example illustrates a stylus pop-up menu opened in the location (not a preview pop-up) where the user taps with the stylus as well as the resource that defines the menu items:
The menu is constructed only once: when HandlePointerEventL runs for the first time. Later the already constructed menu is shown again.
void CMyAppView::HandlePointerEventL ( const TPointerEvent& aPointerEvent ) { if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { if ( !iMenu ) { iMenu = CAknStylusPopUpMenu::NewL( iMenuObserver, aPointerEvent.iParentPosition, NULL ); TInt resourceReaderId = 0; resourceReaderId = R_MYAPP_STYLUS_MENU; TResourceReader reader; iCoeEnv->CreateResourceReaderLC( reader, resourceReaderId ); iMenu->ConstructFromResourceL( reader ); CleanupStack::PopAndDestroy(); // reader } iMenu->SetPosition( aPointerEvent.iParentPosition ); iMenu->ShowMenu(); } // Forward event to base class too. CCoeControl::HandlePointerEventL( aPointerEvent ); } RESOURCE STYLUS_POPUP_MENU r_myapp_stylus_menu { items = { STYLUS_POPUP_MENU_ITEM { txt = "Stylus Popup Menu Item 1"; command = EMyAppMenuItemCmd1; }, STYLUS_POPUP_MENU_ITEM { txt = "Stylus Popup Menu Item 2"; command = EMyAppMenuItemCmd2; }, STYLUS_POPUP_MENU_ITEM { txt = "Stylus Popup Menu Item 3"; command = EMyAppMenuItemCmd3; } }; }