63
Pocket PC Pocket PC Application Application Development Development Robert Turner Robert Turner Application Development Application Development Consultant Consultant Microsoft UK Microsoft UK

Pocket PC Application Development

  • Upload
    yuval

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Pocket PC Application Development. Robert Turner Application Development Consultant Microsoft UK. Agenda. eMbedded Visual Tools development Tools overview What’s new Pocket PC Specifics Intelligent client capabilities and UI design Browser capabilities Application Installation. - PowerPoint PPT Presentation

Citation preview

Page 1: Pocket PC Application Development

Pocket PC Application Pocket PC Application DevelopmentDevelopmentRobert TurnerRobert TurnerApplication Development ConsultantApplication Development ConsultantMicrosoft UKMicrosoft UK

Page 2: Pocket PC Application Development

AgendaAgenda eMbedded Visual Tools eMbedded Visual Tools

developmentdevelopment Tools overviewTools overview What’s newWhat’s new

Pocket PC SpecificsPocket PC Specifics Intelligent client capabilities and UI Intelligent client capabilities and UI

designdesign Browser capabilitiesBrowser capabilities

Application InstallationApplication Installation

Page 3: Pocket PC Application Development

Windows CE 3.0Windows CE 3.0 Highly componentised OSHighly componentised OS OEM’s can pick and chooseOEM’s can pick and choose Two logo’ed configurations enable Two logo’ed configurations enable

device consistency for the majoritydevice consistency for the majority Pocket PCPocket PC Handheld PC 2000Handheld PC 2000

Adoption of changes back into the Adoption of changes back into the OSOS

Page 4: Pocket PC Application Development

Embedded Visual Tools Embedded Visual Tools DevelopmentDevelopment

Page 5: Pocket PC Application Development

Tools LandscapeTools LandscapeChoosing the correct toolChoosing the correct tool

eVBeVB eVCeVCPlatformPlatformBuilderBuilder

LOBLOBAppsApps

UI UI ExploitiveExploitive

AppsApps

Device Drivers/Device Drivers/Time CriticalTime Critical

Page 6: Pocket PC Application Development

Programming ModelsProgramming ModelsEmbedded devices and applicationsEmbedded devices and applications

Subset/Superset: Win32 APIs

Win32 APIsDevice Specific

Custom WinCE OS Configuration

Custom Hardware

PocketPC SDK OEM SDK OEM SDK

HardwareDevelopment

ApplicationDevelopment

OSDevelopment

Win32 APIsDevice Specific

Win32 APIsDevice Specific

Page 7: Pocket PC Application Development

Pocket PC App Platform DiagramPocket PC App Platform Diagram

WinCE 3.0 (Cedar): Win32, OLE, Winsock, etc

VBMFCATL

Your App Goes Here

GAPI

WinInetpIE

HTMLJScript

XMLXSL

RapierShell APIs

POOM

Mail API

ADO

Page 8: Pocket PC Application Development

What’s New In Embedded What’s New In Embedded Visual Tools ?Visual Tools ? eVC/eVB are standalone, no longer eVC/eVB are standalone, no longer

VS add-insVS add-ins Separate from but co-exist with VS and VS Separate from but co-exist with VS and VS

SPsSPs Remove support for Win32 desktop Remove support for Win32 desktop

developmentdevelopment Customer BenefitsCustomer Benefits

Greatly simplified setup, UI with embedded Greatly simplified setup, UI with embedded focusfocus

IDE tailored for platform-specific support IDE tailored for platform-specific support through Windows CE SDKsthrough Windows CE SDKs

Lower cost - no longer need VS installedLower cost - no longer need VS installed

Page 9: Pocket PC Application Development

Documentation ChangesDocumentation Changes

Page 10: Pocket PC Application Development

New Features In 3.0 IDE - eVCNew Features In 3.0 IDE - eVC

Robert Turner
What exactly are the new features?
Page 11: Pocket PC Application Development

Wizards - eVCWizards - eVC 2 New Pocket PC Specific Wizards2 New Pocket PC Specific Wizards

WCE Pocket PC appWCE Pocket PC app WCE Pocket PC MFC appWCE Pocket PC MFC app

Add functionality specific to Pocket Add functionality specific to Pocket PC UIPC UI Check for previous instanceCheck for previous instance Create Pocket PC menu bar Create Pocket PC menu bar

SHCreateMenuBarSHCreateMenuBar SHHandleWMSettingChangeSHHandleWMSettingChange SHInitDialog in about dialogSHInitDialog in about dialog

Page 12: Pocket PC Application Development

DemoDemo

Page 13: Pocket PC Application Development

What Is New In MFC For What Is New In MFC For Pocket PC? - eVCPocket PC? - eVC

Property sheetsProperty sheets Flat tabs, not 3DFlat tabs, not 3D

Dialog boxesDialog boxes Full Screen, no borderFull Screen, no border

Find and replace text dialog and toolbarFind and replace text dialog and toolbar CFindReplaceDialog CFindReplaceDialog

Document list for browsing filesDocument list for browsing files Like standard pocket PC appsLike standard pocket PC apps CCeDocListCCeDocList

Page 14: Pocket PC Application Development

More API’s For Pocket PC - eVCMore API’s For Pocket PC - eVC Context menuContext menu

Hold stylus down – Tap ‘n HoldHold stylus down – Tap ‘n Hold Automatic within MFCAutomatic within MFC

Borderless WindowsBorderless Windows Internet Explorer style re-BarsInternet Explorer style re-Bars Custom Today ItemsCustom Today Items

Page 15: Pocket PC Application Development

About eVBAbout eVB eVB language is a subset of that used by eVB language is a subset of that used by

the desktop version of Visual Basicthe desktop version of Visual Basic Small, lightweight, and interpreted, Small, lightweight, and interpreted,

Related to VBScriptRelated to VBScript eVB combines the robust power of eVB combines the robust power of

Visual Basic with the compact portability Visual Basic with the compact portability and ease of use characteristic of and ease of use characteristic of VBScriptVBScript

Page 16: Pocket PC Application Development

What’s New In eVB 3.0What’s New In eVB 3.0 IDEIDE

Standalone toolsetStandalone toolset Focus on Platform functionalityFocus on Platform functionality Limits features based on PlatformLimits features based on Platform

Toolbox, Properties, Intellisense, …Toolbox, Properties, Intellisense, … Integrated Debugger (ethernet-enabled)Integrated Debugger (ethernet-enabled)

RuntimeRuntime Pocket PC specific runtime Pocket PC specific runtime Access to Windows CE APIs through VB Access to Windows CE APIs through VB

style Declare statementstyle Declare statement

Robert Turner
Not sure this is in the right context
Page 17: Pocket PC Application Development

Intelligent Client Intelligent Client Capabilities and UI Capabilities and UI DesignDesign

Page 18: Pocket PC Application Development

Wyvern v. RapierWyvern v. Rapier

Page 19: Pocket PC Application Development

Key is SimplifyKey is Simplify Remove complexityRemove complexity

Flat controls & Page-based dialogsFlat controls & Page-based dialogs Single tapSingle tap Redesign of control panelsRedesign of control panels Remove redundant menus, introduce tap & Remove redundant menus, introduce tap &

holdhold Use colour sparinglyUse colour sparingly

Robert Turner
What are Page-based dialogs?
Page 20: Pocket PC Application Development

UI Design Principles UI Design Principles The form factor is critical, optimize for itThe form factor is critical, optimize for it Design for the 80% / 20% case rather than Design for the 80% / 20% case rather than

the 100% casethe 100% case More content, less app More content, less app Reduce redundancy, and reduce effortReduce redundancy, and reduce effort Windows affinity, not wholesale copy Windows affinity, not wholesale copy Consistency with what users expect, not Consistency with what users expect, not

for its own sake for its own sake Single click - convention onlySingle click - convention only Ease up on the eyesEase up on the eyes Simple NOT simplisticSimple NOT simplistic

Robert Turner
What is the 80% / 20% case?
Page 21: Pocket PC Application Development

New ShellNav bar on top (start button +

title bar), command bar on bottom, system tray on home screen only

New User ModelSingle tap, autosave

everywhere, close cards/documents (no cancel)

Flat look & feel Pages instead of cascading

menus, flat buttons, fewer controls

Feature consolidationRemoved redundant

menus/buttons, redesigned control panel

Client Area

New

Start Menu

App Name

SIP

Menu Bar

App Menu

Redesigned UIRedesigned UI

Robert Turner
Menu on bottom so that you don't put hand across screen when accessing menu, only when changing app.
Page 22: Pocket PC Application Development

Designing For Pocket PCDesigning For Pocket PC Flat interfaceFlat interface Menu bar controlMenu bar control Simple interactionSimple interaction Popup menusPopup menus OK buttonsOK buttons Minimize data inputMinimize data input

Page 23: Pocket PC Application Development

The Flat Look The Flat Look Design StuffDesign Stuff

Works better on small screens w/range of Works better on small screens w/range of resolutions incl. greyscaleresolutions incl. greyscale

3D is so…last century3D is so…last century Detail - eVCDetail - eVC

Mostly standard Win32. Avoid Mostly standard Win32. Avoid WS_DLGFRAME and WS_DLGFRAME and WS_EX_WINDOWEDGE WS_EX_WINDOWEDGE

CCM_SETVERSION with CCM_SETVERSION with COMCTL32_VERSIONCOMCTL32_VERSION

Others inherit for free (except PropSheets)Others inherit for free (except PropSheets)

Page 24: Pocket PC Application Development

Navigation BarNavigation Bar Design StuffDesign Stuff

Start at 0,0, prime real estateStart at 0,0, prime real estate Title should only be app name, should Title should only be app name, should

not changenot change Instantly conveys a sense of placeInstantly conveys a sense of place OK button, closes dialogs & docsOK button, closes dialogs & docs No cancel, just undoNo cancel, just undo

Read is often different from editRead is often different from edit Tray objects only appear on TodayTray objects only appear on Today

Page 25: Pocket PC Application Development

Navigation Bar - eVCNavigation Bar - eVC Respecting spaceRespecting space

CreateWindows at CW_USEDEFAULT, CreateWindows at CW_USEDEFAULT, CW_USEDEFAULT origin, NOT at (0,0)CW_USEDEFAULT origin, NOT at (0,0)

And/Or use SHSipInfoAnd/Or use SHSipInfo

Page 26: Pocket PC Application Development

si.cbSize = sizeof(si);si.cbSize = sizeof(si);if( SHSipInfo(SPI_GETSIPINFO, 0, &si, 0) )if( SHSipInfo(SPI_GETSIPINFO, 0, &si, 0) ){{

if (dwStyle & WS_POPUP)if (dwStyle & WS_POPUP) {{ x = si.rcVisibleDesktop.left;x = si.rcVisibleDesktop.left;

y = si.rcVisibleDesktop.top;y = si.rcVisibleDesktop.top;}}

//Consider the menu at the bottom, please.//Consider the menu at the bottom, please. iDelta = (si.fdwFlags & SIPF_ON) ? 0 : iDelta = (si.fdwFlags & SIPF_ON) ? 0 :

MENU_HEIGHT;MENU_HEIGHT;cx = si.rcVisibleDesktop.right - cx = si.rcVisibleDesktop.right - si.rcVisibleDesktop.left;si.rcVisibleDesktop.left;cy = si.rcVisibleDesktop.bottom - cy = si.rcVisibleDesktop.bottom - si.rcVisibleDesktop.top - iDelta;si.rcVisibleDesktop.top - iDelta;

hwnd = CreateWindow(lpClassName, hwnd = CreateWindow(lpClassName, lpWindowName, lpWindowName, dwStyle, x, y, cx, cy, dwStyle, x, y, cx, cy, hWndParent, hMenu, hWndParent, hMenu, hInstance, lpParam);hInstance, lpParam);

}}

Navigation Bar - eVCNavigation Bar - eVC

Page 27: Pocket PC Application Development

Navigation Bar - eVCNavigation Bar - eVC Shared ResourcesShared Resources

Title comes from your top level window Title comes from your top level window texttext

OK buttonOK button Remove WS_CAPTION and WS_SYSMENU bits, Remove WS_CAPTION and WS_SYSMENU bits,

add WS_EX_CAPTIONOKBTNadd WS_EX_CAPTIONOKBTN For Dialogs, use SHInitDialog:For Dialogs, use SHInitDialog:

SHINITDLGINFO shidi;SHINITDLGINFO shidi;shidi.hDlg = hwnd;shidi.hDlg = hwnd;shidi.dwMask = SHIDIM_FLAGS;shidi.dwMask = SHIDIM_FLAGS;shidi.dwFlags = shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_DONEBUTTON;SHIDIF_DONEBUTTON;

SHInitDialog(&shidi);SHInitDialog(&shidi);

Page 28: Pocket PC Application Development

OK Button - eVBOK Button - eVB To add set ShowOK property = TrueTo add set ShowOK property = True Handling OK button clickHandling OK button click

Private Sub Form_OKClick()Private Sub Form_OKClick() Me.HideMe.HideEnd SubEnd Sub

Included by default for main formIncluded by default for main form

Page 29: Pocket PC Application Development

Navigation Bar - eVCNavigation Bar - eVC Hiding the NavBarHiding the NavBar

Use SHFullScreenUse SHFullScreen WithWith

dwState = SHFS_HIDETASKBAR | dwState = SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON; // to hideSHFS_HIDESTARTICON; // to hide

dwState = SHFS_SHOWTASKBAR | dwState = SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON | SHFS_SHOWSIPBUTTON | SHFS_SHOWSTARTICON; // to showSHFS_SHOWSTARTICON; // to show

Must be foreground windowMust be foreground window Do this on WM_ACTIVATEDo this on WM_ACTIVATE

Page 30: Pocket PC Application Development

New Menu BarNew Menu Bar Design StuffDesign Stuff

Moved to bottom so hand does not Moved to bottom so hand does not obstruct operationsobstruct operations

Menus & toolbar buttons mixed on Menus & toolbar buttons mixed on ONE bar, no overlapping rebarONE bar, no overlapping rebar

Tooltips Tooltips if the icon isn’t 100% self-evident, just if the icon isn’t 100% self-evident, just

use a menu or textuse a menu or text Buttons and menus should NOT be Buttons and menus should NOT be

redundantredundant

Page 31: Pocket PC Application Development

MenuBar - eVBMenuBar - eVB Adding buttons programmaticallyAdding buttons programmatically

Dim mnuAssets As MenuBarLib.ItemDim mnuAssets As MenuBarLib.ItemSet mnuAssets = menubar1.Controls.AddMenu("Assets", Set mnuAssets = menubar1.Controls.AddMenu("Assets",

"mnuAssets")"mnuAssets")mnuAssets.Items.Add 1, "mnuAssetsAdd", "Add"mnuAssets.Items.Add 1, "mnuAssetsAdd", "Add"mnuAssets.Items.Add 2, "mnuAssetsList", "List“mnuAssets.Items.Add 2, "mnuAssetsList", "List“

Responding when menuBar buttons are Responding when menuBar buttons are clickedclickedPrivate Sub menubar1_MenuClick(ByVal Item As Private Sub menubar1_MenuClick(ByVal Item As

MenuBarLib.Item)MenuBarLib.Item)Select Case Item.KeySelect Case Item.KeyCase "mnuAssetsAdd"Case "mnuAssetsAdd"AssetNumber.Text = ""AssetNumber.Text = ""

Page 32: Pocket PC Application Development

New “New” ButtonNew “New” Button Design StuffDesign Stuff

Quick input is criticalQuick input is critical Shared with all appsShared with all apps On Today page and a user option to On Today page and a user option to

turn on everywhereturn on everywhere Don’t spam itDon’t spam it

You can spam it in your own appYou can spam it in your own app

Page 33: Pocket PC Application Development

MenuBar new New… - eVBMenuBar new New… - eVB New button enabled through properties New button enabled through properties

of MenuBar Controlof MenuBar Control Detecting when New is clicked,Detecting when New is clicked,

Private Sub MenuBar1_NewClick()Private Sub MenuBar1_NewClick() MsgBox ("New Button Clicked")MsgBox ("New Button Clicked")

End SubEnd Sub

Page 34: Pocket PC Application Development

InputInput Design StuffDesign Stuff

Design with the SIP Design with the SIP Put it up for people and take it downPut it up for people and take it down Try not to make it danceTry not to make it dance Input is hard, make it easy…Input is hard, make it easy… Remember it is pluggable, Remember it is pluggable,

recommended 80 pixels highrecommended 80 pixels high Could be different!Could be different!

Page 35: Pocket PC Application Development

Input - eVCInput - eVC SIP friendliness (the rules)SIP friendliness (the rules) SHSipPreference(HWND hwnd, SHSipPreference(HWND hwnd,

SIPSTATE eState)SIPSTATE eState) SIP_UP on WM_SETFOCUSSIP_UP on WM_SETFOCUS SIP_DOWN on WM_KILLFOCUSSIP_DOWN on WM_KILLFOCUS Do nothing if you’re not an input controlDo nothing if you’re not an input control

WC_SIPPREF magic controlWC_SIPPREF magic control CONTROL "",-1,WC_SIPPREF, CONTROL "",-1,WC_SIPPREF,

NOT WS_VISIBLE,-10,-10,5,5NOT WS_VISIBLE,-10,-10,5,5 Input DialogsInput Dialogs

SHInputDialog(hwnd, uMsg, wParam)SHInputDialog(hwnd, uMsg, wParam)

Page 36: Pocket PC Application Development

Input - eVCInput - eVC Main WndProc - save & restore sip state per Main WndProc - save & restore sip state per

windowwindowcase WM_INITDIALOG/WM_CREATE:case WM_INITDIALOG/WM_CREATE:this->sai.cbSize = sizeof(SHACTIVATEINFO);this->sai.cbSize = sizeof(SHACTIVATEINFO);break;break;

case WM_ACTIVATE:case WM_ACTIVATE:SHHandleWMActivate(hWnd, wParam, lParam, SHHandleWMActivate(hWnd, wParam, lParam, &this->sai, 0);&this->sai, 0);break;break;

case WM_SETTINGCHANGE:case WM_SETTINGCHANGE:SHHandleWMSettingChange(hDlg, wParam, SHHandleWMSettingChange(hDlg, wParam, lParam, &this->sai));lParam, &this->sai));break;break;

case WM_SIZE:case WM_SIZE://sizing goo here.//sizing goo here.break;break;

Page 37: Pocket PC Application Development

Controlling the SIP - eVBControlling the SIP - eVB SIPBehaviorSIPBehavior

This property determines underThis property determines underwhat conditions the input panel what conditions the input panel appears.appears.

objectobject.SIPBehavior [= .SIPBehavior [= valuevalue]] SIPVisibleSIPVisible

This property determines the visibility of the input This property determines the visibility of the input panel.panel.

object.object.SIPVisible [SIPVisible [= Boolean= Boolean]] SIPChangeSIPChange

This event occurs when the display state of the This event occurs when the display state of the input panel changes.input panel changes.

Private Sub Private Sub formform_SIPChange( _SIPChange( BooleanBoolean ) )

Page 38: Pocket PC Application Development

Handling SIP - eVCHandling SIP - eVC Determine and set SIP StatusDetermine and set SIP Status

SipGetInfo( )SipGetInfo( ) and and SipSetInfo( )SipSetInfo( ) SIPINFO Structure contains…SIPINFO Structure contains…

Flags – Sip ON, OFF and LockedFlags – Sip ON, OFF and Locked Rectangle of Visible ScreenRectangle of Visible Screen Rectangle of SIPRectangle of SIP

Call Call SipGetInfo( )SipGetInfo( ) to determine to determine current status and current status and SipSetInfo( )SipSetInfo( ) to to change status.change status.

Page 39: Pocket PC Application Development

PerformancePerformance For best results and maximum For best results and maximum

efficiency, streamline applications for efficiency, streamline applications for Windows CE-based devicesWindows CE-based devices Think about the functionality you NEED on Think about the functionality you NEED on

the device.the device. Multiple forms?Multiple forms?

Think UI Simplicity.Think UI Simplicity. Use TabStrip control to group tasks.Use TabStrip control to group tasks. Use multiple frames on one form and move Use multiple frames on one form and move

frames into view as needed. See NWind frames into view as needed. See NWind sample from SQLCE for examplesample from SQLCE for example

Page 40: Pocket PC Application Development

Browser Based Browser Based CapabilitiesCapabilities

Page 41: Pocket PC Application Development

Pocket IE CapabilitiesPocket IE CapabilitiesOverviewOverview

HTML 3.2 CompliantHTML 3.2 Compliant JavaScript 1.1 compliantJavaScript 1.1 compliant XML Object ModelXML Object Model SSLSSL Active X supportActive X support

NOTE: Emulator does not run JScript

Page 42: Pocket PC Application Development

HTML CapabilitiesHTML Capabilities HTML 3.2 supportHTML 3.2 support

Lightweight & ubiquitousLightweight & ubiquitous FramesetsFramesets

Per HTML 4.0 specPer HTML 4.0 spec Borders always visible even with Borders always visible even with

BORDER=0BORDER=0 Linked wav files will be played without Linked wav files will be played without

user interactionuser interaction

Page 43: Pocket PC Application Development

HTML CapabilitiesHTML Capabilities DHTMLDHTML

Useful on the desktop, but still Useful on the desktop, but still heavyweight for handheldsheavyweight for handhelds

CSSCSS Use XSL stylesheets insteadUse XSL stylesheets instead

Animated GIFs, background images Animated GIFs, background images and soundsand sounds

Page 44: Pocket PC Application Development

JScript CapabilitiesJScript Capabilities HTML 3.2-based object modelHTML 3.2-based object model

Not the IE4 OMNot the IE4 OM Core script support:Core script support:

Scripting against FORM elementsScripting against FORM elements Scripting against the XML OMScripting against the XML OM

Page 45: Pocket PC Application Development

JScript CapabilitiesJScript CapabilitiesNot supported:Not supported: Dynamic frameset creationDynamic frameset creation Dynamic script generationDynamic script generation Window.openWindow.open

Page 46: Pocket PC Application Development

Detecting Pocket IEDetecting Pocket IEServer-side VBScriptServer-side VBScript'Check for Windows CE'Check for Windows CEif (InStr(Request.ServerVariables("HTTP_USER_AGENT"), if (InStr(Request.ServerVariables("HTTP_USER_AGENT"),

"Windows CE")) then"Windows CE")) then{ add Windows CE specific code }{ add Windows CE specific code }

elseelse{ add code for other platforms }{ add code for other platforms }

end ifend if'Check for Pocket PC'Check for Pocket PCif (InStr(Request.ServerVariables("HTTP_UA_OS"), if (InStr(Request.ServerVariables("HTTP_UA_OS"),

"POCKET PC")) then"POCKET PC")) then{ add Pocket PC specific code }{ add Pocket PC specific code }

elseelse{ add code for other platforms }{ add code for other platforms }

end ifend if

Page 47: Pocket PC Application Development

Detecting Pocket IEDetecting Pocket IEClient-side JScriptClient-side JScriptvar strNav = navigator.userAgent;var strNav = navigator.userAgent;var isCE = strNav.indexOf("Windows CE");var isCE = strNav.indexOf("Windows CE");if(isCE > -1) {if(isCE > -1) {

{ add Windows CE specific code }{ add Windows CE specific code }}}else {else {

{ add code for other platforms }{ add code for other platforms }}}var isPPC = strNav.indexOf("240x320");var isPPC = strNav.indexOf("240x320");if(isPPC > -1) {if(isPPC > -1) {

{ add Pocket PC specific code }{ add Pocket PC specific code }}}else {else {

{ add code for other platforms }{ add code for other platforms }}}

Page 48: Pocket PC Application Development

XML CapabilitiesXML Capabilities Same XML component as IE5Same XML component as IE5 Markup and transfer of data as XMLMarkup and transfer of data as XML How it works:How it works:

Data-as-XML delivered from server embedded Data-as-XML delivered from server embedded in HTML page - an XML ‘Data Island’in HTML page - an XML ‘Data Island’

Data read out of page, parsed, and placed into Data read out of page, parsed, and placed into a data treea data tree

JScript accesses the XML OMJScript accesses the XML OMand manipulates the dataand manipulates the data

Page 49: Pocket PC Application Development

XML CapabilitiesXML Capabilities Render the XML data in the browser Render the XML data in the browser

as HTMLas HTML Use XSL to transform XML into HTMLUse XSL to transform XML into HTML

Describe appearance of HTML page Describe appearance of HTML page with XMLwith XML Instead of CSS, markup page with XSLInstead of CSS, markup page with XSL Minimize round-trips to the serverMinimize round-trips to the server Easy support for multiple browser typesEasy support for multiple browser types

Page 50: Pocket PC Application Development

<SCRIPT LANGUAGE=“JSCRIPT”><SCRIPT LANGUAGE=“JSCRIPT”>var xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");var xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");xmlhttp.Open("POST", "XMLlog.asp", false);xmlhttp.Open("POST", "XMLlog.asp", false);

var strXML = "<changeprice SKU='" + var strXML = "<changeprice SKU='" + document.forms[0].SKU.value + "' document.forms[0].SKU.value + "' Price='" + iNewPrice + "'/>";Price='" + iNewPrice + "'/>";

// Send request to logging page // Send request to logging page xmlhttp.Send(strXML);xmlhttp.Send(strXML);

// Show response (success or failure)// Show response (success or failure)

alert(xmlhttp.responsetext);alert(xmlhttp.responsetext);</SCRIPT></SCRIPT>

Using the XMLHTTP ObjectUsing the XMLHTTP Objectthe requestthe request

Page 51: Pocket PC Application Development

<%@ LANGUAGE="VBSCRIPT" %><%@ LANGUAGE="VBSCRIPT" %><% Response.ContentType = "text/xml"<% Response.ContentType = "text/xml"set XMLReq = Server.CreateObject("Microsoft.XMLDOM")set XMLReq = Server.CreateObject("Microsoft.XMLDOM")XMLReq.load(Request)XMLReq.load(Request)

set xmlAction = XMLReq.selectSingleNode("//changeprice")set xmlAction = XMLReq.selectSingleNode("//changeprice")iSKU = xmlAction.GetAttribute("SKU")iSKU = xmlAction.GetAttribute("SKU")iPrice = xmlAction.GetAttribute("Price")iPrice = xmlAction.GetAttribute("Price"){ open recordset containing the requested SKU }{ open recordset containing the requested SKU }if not rsData.eof thenif not rsData.eof then

rsData("Price") = iPricersData("Price") = iPricersData.updatersData.updateresponse.write "Price changed successfully to $" & response.write "Price changed successfully to $" & iPrice & "."iPrice & "."

elseelseresponse.write "No record found for this SKU."response.write "No record found for this SKU."

end if %>end if %>

Using the XMLHTTP ObjectUsing the XMLHTTP Objectthe responsethe response

Page 52: Pocket PC Application Development

Security CapabilitiesSecurity Capabilities For secure transactions, Pocket IE For secure transactions, Pocket IE

supports:supports: SSLSSL

64-bit certificates64-bit certificates 128-bit encryption (add-on)128-bit encryption (add-on)

Page 53: Pocket PC Application Development

ActiveX CapabilitiesActiveX Capabilities Straightforward – just like the desktopStraightforward – just like the desktop

COM component accessed from <OBJECT> COM component accessed from <OBJECT> tagtag

Script can call ActiveX components, but not Script can call ActiveX components, but not vice-versavice-versa

Must be installed on device directlyMust be installed on device directly No auto-downloadNo auto-download Great hook for rich device-web interaction Great hook for rich device-web interaction

scenariosscenarios

Page 54: Pocket PC Application Development

Efficient Use of Pocket IEEfficient Use of Pocket IESuggestionsSuggestions

Keep it simple – just the essentialsKeep it simple – just the essentials Avoid >2 frames per pageAvoid >2 frames per page Use tables sparingly; allow for dynamic Use tables sparingly; allow for dynamic

resizingresizing Single-column formatSingle-column format

Pocket IE pages should Pocket IE pages should nevernever require require horizontal scrollinghorizontal scrolling

Makes single-handed reading easyMakes single-handed reading easy

Page 55: Pocket PC Application Development

Application InstallationApplication Installation

Page 56: Pocket PC Application Development

AppInstall Distribution AppInstall Distribution MethodsMethods AppInstall supports multiple distribution AppInstall supports multiple distribution

methods:methods: Web to device (via Pocket Internet Explorer)Web to device (via Pocket Internet Explorer) CF Card to device (via AutoRun/Explorer)CF Card to device (via AutoRun/Explorer) Device to device (via IR)Device to device (via IR) Desktop to device (via AppMgr)Desktop to device (via AppMgr)

Accomplished by distributing the CAB Accomplished by distributing the CAB files themselvesfiles themselves

With CEF, only need to distribute one CAB With CEF, only need to distribute one CAB file to support all Pocket PC devicesfile to support all Pocket PC devices

Page 57: Pocket PC Application Development

AppInstall OverviewAppInstall Overview

11

BBDesktop Desktop SetupSetup

CabWizCabWizINFINF

AppAppFilesFiles

AppMgrAppMgrINIINI

CabWizCabWiz(desktop)(desktop)

CEAppMgrCEAppMgr(desktop)(desktop)

WCELoadWCELoad(device)(device)

CABCABFilesFiles

22

33

44 CC

AA

Page 58: Pocket PC Application Development

AppMgr Register-only FlagAppMgr Register-only Flag New flag to register your app onlyNew flag to register your app only Will not run the AppMgr UIWill not run the AppMgr UI UsageUsage

CEAppMgr.exe /register “<INI file>” [“<INI CEAppMgr.exe /register “<INI file>” [“<INI file>”]file>”]

ExampleExample CEAppMgr.exe /registerCEAppMgr.exe /register ““C:\MyApp\Game1.ini”C:\MyApp\Game1.ini” ““C:\MyApp\Game2.ini”C:\MyApp\Game2.ini”

Page 59: Pocket PC Application Development

CE-Operating System CE-Operating System Min/Max VersionMin/Max Version AppMgr now uses CE-Operating AppMgr now uses CE-Operating

System min/max version information System min/max version information in the CABs to determine which CAB in the CABs to determine which CAB to downloadto download

Allows supporting all Allows supporting all Palm-size/Pocket PC devices with a Palm-size/Pocket PC devices with a single CabWiz INF and AppMgr INI single CabWiz INF and AppMgr INI filefile

Page 60: Pocket PC Application Development

CE-Operating System CE-Operating System Min/Max VersionMin/Max Version[CEDevice.PPC1] ; Palm-size PC black/white[CEDevice.PPC1] ; Palm-size PC black/whiteVersionMin = 2.1VersionMin = 2.1VersionMax = 2.1VersionMax = 2.1

[CEDevice.PPC2] ; Palm-size PC colour[CEDevice.PPC2] ; Palm-size PC colourVersionMin = 2.11VersionMin = 2.11VersionMax = 2.11VersionMax = 2.11

[CEDevice.PPC3] ; Pocket PC and beyond[CEDevice.PPC3] ; Pocket PC and beyondVersionMin = 3.0VersionMin = 3.0VersionMax = 100.0 ; arbitrary high valueVersionMax = 100.0 ; arbitrary high value

Page 61: Pocket PC Application Development

CE-Operating System CE-Operating System Version InformationVersion Information

AppInstall does not support H/PC 1.0AppInstall does not support H/PC 1.0 CE API to get Platform Name:CE API to get Platform Name:

SystemParametersInfoSystemParametersInfo(SPI_GETPLATFORMTYPE, …)(SPI_GETPLATFORMTYPE, …)

Device Device PlatformPlatform CE OSCE OSH/PC 2.0H/PC 2.0 “HPC”“HPC” 2.02.0H/PC 3.0H/PC 3.0 “HPC Pro”“HPC Pro” 2.112.11Palm-size PC 1.0Palm-size PC 1.0 “Palm PC”“Palm PC” 2.12.1Palm-size PC 2.0Palm-size PC 2.0 “Palm PC”“Palm PC” 2.112.11Pocket PCPocket PC “Palm PC”“Palm PC” 3.03.0

Page 62: Pocket PC Application Development

Q & AQ & A

Page 63: Pocket PC Application Development