Home > Articles

This chapter is from the book

Understanding the Different Windows Forms Target Platforms

Smart Device Extensions (SDE) projects must target either the Pocket PC OS or the Windows CE .NET OS. These two platforms have different user interface APIs. An SDE project handles this by calling different libraries on each platform.

Understanding Windows CE .NET Projects

Windows CE .NET projects are similar to full .NET Framework Windows application projects. First, the minimize button, maximize button, and close button appear in the control box of the application just as they do in the full .NET Framework Form object. These buttons also behave as they would on the desktop. You can remove the control box from the form by setting the ControlBox property to false. You can remove the minimize button and maximize button by setting the MinimizeBox and MaximizeBox properties, respectively, to false.

When a Windows CE .NET application form is created by the Visual Studio.NET designer, its size is set to be 640 x 450. You can modify the Size property if this is not appropriate for your application. Although the Form class exposes the FormBorderSytle property, setting the property to Sizable will not affect the window's border. No Windows CE .NET application is resizable. It can only be minimized, maximized to full screen, or sized according to the Size property.

Understanding Pocket PC Projects

Pocket PC applications deviate further from full .NET Framework Windows application projects. First, a MainMenu object is always added to a Pocket PC application. You can remove this menu, but doing so will cause an exception to be thrown when interacting with the Soft Input Panel (SIP). The SIP is a software implementation of the QWERTY keyboard.

The Visual Studio .NET ToolBox window contains an InputPanel control. On the Pocket PC this control allows you to interact with the SIP. The InputPanel allows you to raise and lower the SIP. The InputPanel will also notify your application when the SIP has been enabled. Interestingly, your form must have a MainMenu control on it in order for the InputPanel control to be added to the form. If there is no MainMenu control on the form, then an exception will be thrown at runtime when you attempt to make the InputPanel visible.

Pocket PC applications must adhere to certain guidelines and recommendations. First, there must be only one instance of an application running at once. The .NET Compact Framework runtime guarantees this functionality, so there is no need to write code that ensures that only one instance of your application is running.

The second guideline is that once an application is running, the user should not have the ability to close the application. Instead, the application will be deactivated when it is no longer the application in the foreground. The guidelines state that the application should save any data, release any resources, and disconnect any connections (database connections, for example) when it is deactivated. If the application is started again, it will be activated by the OS. When it is activated, the application should reallocate resources and reestablish any connections. The application will be notified when it is activated or deactivated by Form.Activate and Form.Deactivate events. Unfortunately, the Activate and Deactivate events are not listed in the Properties Designer, so you have to wire these events manually. The following code demonstrates how to handle these events as well as wire them to the Form object.

private void InitializeComponent(){
 this.Activated += new EventHandler(Form1_Activated);
 this.Deactivate += new EventHandler(Form1_Deactivate);

 this.mainMenu1 = new System.Windows.Forms.MainMenu();
 this.Menu = this.mainMenu1;
 this.Text = "Form1";

private void Form1_Activate(object sender, System.EventArgs e) {
 // Re-connect to databases, re-claim resources, and restore saved data

private void Form1_Deactivate(object sender, System.EventArgs e) {
 // Disconnect from databases, release resources, and save data
Private Sub
Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Activated
 ' Re-connect to databases, re-claim resources, and restore saved data
End Sub

Private Sub Form1_Deactivate(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Deactivate
 ' Disconnect from databases, release resources, and save data
End Sub

If available memory becomes scarce, the Pocket PC OS will start terminating minimized applications. If you have handled the Deactivate event correctly, then your application will have saved all data, and the user will not lose any unsaved data. Handle the Form.Closing and Form.Closed events to perform some task when Pocket PC terminates the application.

Because applications cannot be allowed to terminate themselves, you must not give the user the ability to close the application by clicking the OK button in the application's control box. To remove the OK button set the MinimizeBox property to true. This will add the X button to the application's control box. When the X button is clicked, the application is minimized instead of being closed.

Closing a dialog box is handled more traditionally. All dialog boxes should be closable by clicking the OK button (MinimizeBox property set to false), and they should also be displayed full screen. If they are not full screen, they must appear in the center of the screen. Use this code to center a dialog box:

private void CenterForm() {
 Rectangle screenBounds = Screen.PrimaryScreen.Bounds;
 int x = ( screenBounds.Width - this.Width ) / 2;
 int y = ( screenBounds.Height - this.Height ) / 2;
 this.Location = new Point(x, y);
Private Sub CenterForm()
 Dim screenBounds as Rectangle
 Dim x as Int32
 Dim y as Int32

 screenBounds = Screen.PrimaryScreen.Bounds
 x = ( screenBounds.Width - Me.Width ) / 2
 y = ( screenBounds.Height - Me.Height ) / 2
 Me.Location = new Point(x, y)
End Sub

Associating an Icon with Your Application

An application is never really complete until it has its icon. Associating an icon with an application can be done through Visual Studio .NET by opening the project Property Pages dialog box. Then select the General section under the Common Properties folder. Next click the ellipsis next to the Application Icon property. This will display the OpenFileDialog. Locate the icon in the dialog box. Figure 3.5 shows the project Property Pages dialog box.

Figure xxxFigure 3.5 The project Property Pages dialog box.

  • + Share This
  • 🔖 Save To Your Account