Configure Items in the Menus for Launching Applications (Compact 2013)
3/26/2014
On the sample home screen of your device, the main menu, by default, lists the menu items and settings items for Windows Embedded Compact 2013 applications and control panel applications that you specifically include in the run-time image.
You can modify the default settings for the items on the menus. For example, you can change the order of menu items and edit or remove the text descriptions that accompany each menu item.
You can also add menu items to start custom XAML for Windows Embedded-based applications that you develop, build, and include in the run-time image.
Prerequisites
You must have an OS design that includes an application launcher to complete the following procedures. For more information, see Create and Prepare the OS Design and Application Launcher Project.
Change the Order of Menu Items
You can reorganize items in the main menu or control panel menu.
To change the order of menu items displayed on the main menu
Open Main_Default.xml, located in %_WINCEROOT%\Public\Shell\Oak\XRShell\Src.
Rearrange the order of Item elements, including @CESYSGEN conditional statements that enclose elements that are dependent on build variables, as follows:
- Item elements defined at the top of the XML element tree appear at the beginning of the menu.
- Item elements defined at the bottom of the XML element tree appear at the end of the menu.
To change the order of menu items displayed in the control panel menu
Open Setting_Default.xml, located in %_WINCEROOT%\Public\Shell\Oak\XRShell\Src.
Rearrange the order of SettingItem elements, including @CESYSGEN conditional statements that enclose elements that are dependent on build variables, as follows:
- SettingItem elements defined at the top of the XML element tree appear at the beginning of the menu.
- SettingItem elements defined at the bottom of the XML element tree appear at the end of the menu.
Delete Text in a Menu Item
You can delete the title or descriptive text that accompanies each Path element in a menu.
To delete text on a menu item
Open the .xrsl file that defines the menu item. It can be one of the following:
File
Menu item
Main_browser.xrsl
The Browser item in the main menu.
Main_music.xrsl
The Music item in the main menu.
Main_photo.xrsl
The Photo item in the main menu.
Main_settings.xrsl
The Settings item in the main menu.
Main_video.xrsl
The Video item in the main menu.
Setting_audio.xrsl
The Audio item in the control panel menu.
Setting_bluetooth.xrsl
The Bluetooth item in the control panel menu.
Setting_datetime.xrsl
The Date and Time item in the control panel menu.
Setting_display.xrsl
The Display item in the control panel menu.
Setting_ethernet.xrsl
The Ethernet item in the control panel menu.
Setting_networking.xrsl
The Networking item in the control panel menu.
Setting_regional.xrsl
The Regional Settings item in the control panel menu.
Setting_wifi.xrsl
The Wi-Fi item in the control panel menu.
Sample home screen .xrsl files are located at %_WINCEROOT%\public\shell\oak\XRShell\src.
Remove the text that identifies the menu item:
In the .xrsl file, locate the Name element.
Delete the content in the Name element start and end tags, convert the start and end tags to an empty element, and then add a Text attribute that is set to an empty string as follows:
<Name _locId="IDName" Text=" " />
Remove the text that describes the menu item:
In the .xrsl file, locate the Description element.
Delete the content in the Description element start and end tags, convert the start and end tags to an empty element, and then add a Text attribute that is set to an empty string as follows:
<Description _locId="IDDescription" Text=" " />
Add a New Menu Item
You can add new items to the main menu that start new XAML for Windows Embedded applications. Menu items can include both text and a XAML Path element that resembles an icon.
To create a custom Path element that resembles an icon for your menu item
In Expression Blend, on the File menu, click New Project.
In Project types, select Windows Embedded.
Type a project name, and then click OK.
Paste the following XAML, which contains a sample home screen Path element, into Expression Blend:
<UserControl xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" x:Class="TestPathElement2.MainPage" Width="640" Height="480"> <Grid x:Name="LayoutRoot" Background="Gray"> <Path xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" Data="F1M168.556,119.535L168.804,120.336C169.268,122.352,169.536,124.303,169.571,126.264L169.519,127.503 167.379,131.946C164.669,136.934,161.492,141.63,157.905,145.976L153,151.373 153,148.227 153,145.433 154.819,143.432C159.954,137.209,164.211,130.234,167.399,122.697z M153,101.029C153,101.029,163.571,105.171,166.857,114.028L167.569,116.336 165.53,121.907C162.419,129.262,158.265,136.069,153.254,142.142L153,142.421 153,130.948C153,115.406,153,101.029,153,101.029z M90,77.5C83.096,77.5 77.5,83.096 77.5,90 77.5,96.904 83.096,102.5 90,102.5 96.904,102.5 102.5,96.904 102.5,90 102.5,83.096 96.904,77.5 90,77.5z M90,76C97.732,76 104,82.268 104,90 104,97.732 97.732,104 90,104 82.268,104 76,97.732 76,90 76,82.268 82.268,76 90,76z M90,73.996C81.161,73.996 73.996,81.161 73.996,90 73.996,98.839 81.161,106.004 90,106.004 98.839,106.004 106.004,98.839 106.004,90 106.004,81.161 98.839,73.996 90,73.996z M145.118,63.013C145.118,63.013 148.096,63.013 148.096,63.013 148.929,68.966 149.048,76.47 155.241,83.973 160.004,89.689 165.364,94.809 169.056,99.453 173.938,105.528 177.391,113.15 177.391,120.891 177.391,133.277 171.438,145.541 167.387,152.33 167.387,152.33 165.482,152.33 165.482,152.33 168.341,145.9 174.057,135.3 173.579,123.988 173.342,117.676 170.96,110.887 166.912,105.886 162.386,100.05 154.763,95.405 148.096,94.93 148.096,94.93 148.096,162.453 148.096,162.453 148.096,167.813 144.88,172.695 140.236,176.268 135.71,179.84 129.754,181.984 124.516,181.984 121.18,181.984 118.083,180.913 115.941,179.125 113.678,177.339 112.368,174.72 112.368,171.624 112.368,166.742 115.702,161.857 120.228,158.286 124.754,154.593 130.469,152.212 135.233,152.212 139.402,152.212 142.974,152.808 145.118,154.831 145.118,154.831 145.118,63.013 145.118,63.013z M90,61.988C105.47,61.988 118.012,74.53 118.012,90 118.012,105.47 105.47,118.012 90,118.012 74.53,118.012 61.988,105.47 61.988,90 61.988,74.53 74.53,61.988 90,61.988z M90,60C73.431,60 60,73.431 60,90 60,106.569 73.431,120 90,120 106.569,120 120,106.569 120,90 120,73.431 106.569,60 90,60z M90,8.028C135.272,8.028,171.972,44.728,171.972,90L171.671,95.963 167.342,91.008C163.169,86.436 159.143,82.186 157,78.686 154.091,73.934 151.429,59 151.429,59 151.429,59 140.964,59 140.964,59 140.964,59 140.964,148.714 140.964,148.714 140.964,148.714 133.286,146.571 125.714,150 118.143,153.429 110.398,158.075 108.429,167.857L108.183,169.879 106.52,170.307C101.184,171.399 95.659,171.972 90,171.972 50.387,171.972 17.337,143.874 9.693,106.52L9.461,105 10.226,105C16.781,105 43,105 43,105 51.284,105 58,98.284 58,90 58,81.716 51.284,75 43,75 43,75 16.781,75 10.226,75L9.461,75 9.693,73.48C17.337,36.126,50.387,8.028,90,8.028z M90,2C138.601,2 178,41.399 178,90 178,93.038 177.846,96.039 177.546,98.997L176.97,102.772 176.25,101.655 173.587,98.171 174,90C174,43.608 136.392,6 90,6 43.608,6 6,43.608 6,90 6,136.392 43.608,174 90,174 95.799,174 101.461,173.412 106.929,172.293L108.084,171.996 108.171,174.076 108.593,175.991 107.735,176.212C102.006,177.384 96.075,178 90,178 41.399,178 2,138.601 2,90 2,41.399 41.399,2 90,2z" UseLayoutRounding="False" Stretch="Fill" Margin="4,0" > <Path.Fill> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="White" Offset="0"/> <GradientStop Color="#4CFFFFFF" Offset="1"/> </LinearGradientBrush> </Path.Fill> </Path> </Grid> </UserControl>
Customize or redraw the Path element into a shape that complements your application. For more information, see Draw a shape or path in your project (https://go.microsoft.com/fwlink/p/?LinkId=212266).
To add a new menu item that launches a customized XAML for Windows Embedded application
Open a text editor.
Paste the following XML code into the text editor:
<?xml version="1.0" encoding="utf-8"?> <XRShellShortcut> <Name _locId="IDName">Shortcut_Name</Name> <Description _locId="IDDescription">Shortcut_Description</Description> <Target>\Windows\application.exe</Target> <Args></Args> <Icon> <![CDATA[ <!--Add XAML Path Element here--> ]]> </Icon> </XRShellShortcut>
In the CDATA section in the Icon element, paste the Path element, including all of its attributes and child XAML elements, from the Expression Blend project that you created earlier.
In the Name element, replace "Shortcut_Name" with the name of your application.
In the Description element, replace "Shortcut_Description" with a description for your application.
In the Target element, replace "\Windows\application.exe" with the path to the .exe for your application.
Save the file as an .xrsl file in %_WINCEROOT%\Public\Shell\Oak\XRShell\Src. For main menu items, prefix the file name with "Main_". For settings menu items, prefix the filename with "Setting_". For example, save your file as Main_Application.xrsl.
In %_WINCEROOT%\Public\Shell\Oak\Xrshell\Src, open either Main_default.xml for the main menu or Setting_default.xml for the Settings menu.
Add an Item element that references your .xrsl file.
Note
If the menu item is visible only when a specific variable or SYSGEN is set in the build, put the entry inside a @CESYSGEN conditional statement. Replace BUILD_VARIABLE_TO_SET with the name of the SYSGEN or variable.
For example:
<!-- ; @CESYSGEN IF BUILD_VARIABLE_TO_SET --> <Item Widget="Main_Item"> <File>Main_Application.xrsl</File> </Item> <!-- ; @CESYSGEN ENDIF -->
Open %_WINCEROOT%\Public\Shell\Oak\Files\Shell.bib.
In the FILES list of the shell.bib file, add an entry for the .xrsl file after the entries for default .xrsl files such as Main_Photo.xrsl.
Note
If the menu item is visible only when a specific variable or SYSGEN is set in the build, put the entry inside a @CESYSGEN conditional statement. Replace BUILD_VARIABLE_TO_SET with the name of the SYSGEN or variable.
For example:
; @CESYSGEN IF BUILD_VARIABLE_TO_SET Main_Application.xrsl $(_FLATRELEASEDIR)\Main_Application.xrsl NK SH ; @CESYSGEN ENDIF
Open %_WINCEROOT%\Public\Shell\Oak\Files\Shell.dat.
In shell.dat, locate the section titled "Shortcuts for binaries built before shell in _DEPTREES."
Add an entry for the new menu item under "root:-Directory("\XRShell\__Storage\Main").
Note
If the menu item appears only if a specific variable or SYSGEN is set in the build, put the entry inside a @CESYSGEN conditional statement. Replace BUILD_VARIABLE_TO_SET with the name of the SYSGEN or variable.
For example:
; @CESYSGEN IF BUILD_VARIABLE_TO_SET Directory("\XRShell\__Storage\Main"):-File("Main_Application.xrsl", "\windows\Main_Application.xrsl") ; @CESYSGEN ENDIF
If Platform Builder is currently attached to a virtual CEPC, on the Target menu, click Detach Device.
To rebuild the run-time image, on the Build menu, click Rebuild Solution.
Next Steps
Continue to customize your application launcher as you like by using the procedures in this section. After you complete your customizations, you can use the procedures in Build and Run the Application Launcher to rebuild the theme DLL by using the Command Prompt window in Visual Studio before you rebuild your run-time image.