Construct the menu using the method NewL()in the class CAknStylusPopUpMenu.
Note: 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:
Note: 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;
}
};
}