Pocket PC Application Development
description
Transcript of Pocket PC Application Development
![Page 1: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/1.jpg)
Pocket PC Application Pocket PC Application DevelopmentDevelopmentRobert TurnerRobert TurnerApplication Development ConsultantApplication Development ConsultantMicrosoft UKMicrosoft UK
![Page 2: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/2.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/3.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/4.jpg)
Embedded Visual Tools Embedded Visual Tools DevelopmentDevelopment
![Page 5: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/7.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/8.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/9.jpg)
Documentation ChangesDocumentation Changes
![Page 10: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/10.jpg)
New Features In 3.0 IDE - eVCNew Features In 3.0 IDE - eVC
![Page 11: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/12.jpg)
DemoDemo
![Page 13: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/13.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/15.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/16.jpg)
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
![Page 17: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/17.jpg)
Intelligent Client Intelligent Client Capabilities and UI Capabilities and UI DesignDesign
![Page 18: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/18.jpg)
Wyvern v. RapierWyvern v. Rapier
![Page 19: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/19.jpg)
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
![Page 20: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/20.jpg)
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
![Page 21: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/21.jpg)
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
![Page 22: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/22.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/23.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/24.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/25.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/26.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/27.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/28.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/29.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/30.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/31.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/32.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/33.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/34.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/35.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/36.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/37.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/38.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/39.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/40.jpg)
Browser Based Browser Based CapabilitiesCapabilities
![Page 41: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/41.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/42.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/43.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/44.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/45.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/46.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/47.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/48.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/49.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/50.jpg)
<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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/51.jpg)
<%@ 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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/52.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/53.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/54.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/55.jpg)
Application InstallationApplication Installation
![Page 56: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/56.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/57.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/58.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/59.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/60.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/61.jpg)
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](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/62.jpg)
Q & AQ & A
![Page 63: Pocket PC Application Development](https://reader035.fdocuments.in/reader035/viewer/2022062809/56815a29550346895dc76a58/html5/thumbnails/63.jpg)