This code sample is named Homescreen. It demonstrates how to create a Home-Screen plug-in and custom Home-Screen layout for Windows Mobile 6 Standard.
Home.exe loads the IHomePlugin object, and loads the custom configuration information from the intermediate file via the plug-in's IPersistStream interface.
The user returns to the Home Screen.
The new layout is drawn, and the plug-in responds to a number of system and User Interface (UI) messages.
The user can select the plug-in (a status bar indicating percentage of remaining system memory), and a dialog box appears with more detailed information.
If you have not installed the SampleUnprivDeveloper certificate, you will need to so that your DLL and CAB projects are signed correctly.
Double-click the SampleUnprivDeveloper.pfx certificate icon. The Certificate Import Wizard appears.
Debugging a Home Screen Plug-in at Runtime can be a bit tricky, because the plug-in is already loaded when you want to debug. You must attach to the *home.*exe process.
Make sure that you have a Debug Version of the plug-in installed and working on an attached Windows Mobile 6 Standard or Windows Mobile 6 Standard emulator.
Load the project in Visual Studio 2005.
Click Tools > Attach to Process.
Choose Smart Device in the list of Transports.
Select or browse for the device that you are working with. A Process list appears.
Attach to the home.exe process.
Switch to the Debug tab in the Output window to see debugging messages.
Open the source file you want to debug, and set a break point in it, such as on IHomePlugin::OnEvent. When you trigger that event, the breakpoint is reached, and you will be able to debug normally.
From the Settings menu, select "Home Screen".
Select Memplug from the drop-down list-box at the top of the screen.
Select Done to return to the Settings Screen.
From there, return to the Home screen. You will see a new Home Screen with the memory usage status bar. The text above it is specified in the layout XML. You can change it by modifying the XML and restarting the device.
This code sample runs as an standard API. Applications that use it must be signed with an standard certificate.
The layout consists of standard plug-ins, and a new plug-in that displays information about available memory. The layout is specified in an XML file that is found in the Common directory. The included memory status plug-in (memplug.cpp) is implemented as a COM object that supports IHomePlugin, in addition to the standard factory and class object interfaces. The Plug-in Manager does one-time initialization of the plug-in via its IHomePlugin::Initialize method, using the custom configuration information specified in the layout XML. Configuration information is saved to an intermediate file (via IPersistStream::Save) and the plug-in is released.