1 / 41

普通 Windows Mobile 应用程序开发

普通 Windows Mobile 应用程序开发. Windows Mobile 应用开发培训 陈震邦 2009.4.18. Pocket PC. SmartPhone.

ismael
Download Presentation

普通 Windows Mobile 应用程序开发

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 普通Windows Mobile应用程序开发 Windows Mobile应用开发培训 陈震邦 2009.4.18

  2. Pocket PC SmartPhone

  3. Microsoft Windows mobile系统的特点:类似于小电脑,目前主流配置:CPU:180~600MHZ;程序内存64-128MB;ROM内存:128-256MB与其他手机系统比较-------优点:1、内置office系统2、含Internet、多媒体等PDA功能3、可安装卸载软件,有触摸屏等等4、支持很多硬件设备—SDRAM,USB,PCI等缺点:1、操作复杂2、对硬件要求高3、体积较大Windows mobile 软件平台分类:1、SmartPhone2、Pocket PC

  4. Windows Mobile操作系统的分类: 1、Standard、 2、Professional 3、Classic

  5. Windows mobile系统总体架构图

  6. Windows Mobile的体系结构与特征 • 采用Windows兼容的Win32 API方式 • 使用的API和WINCE基本相同,另外还加入了Windows Mobile特有的API. • 对COM/ActiveX的支持上,Windows Mobile只支持“轻量级”的COM,而且对COM的执行是在进程内完成的。 • 支持MFC • 支持Microsoft .NET Compact Framework

  7. Windows Mobile应用开发环境和常用工具介绍 Visual studio 2005/2008 Windows mobile sdk Remote Spy Remote Heep Remote Register Editor Remote Zoom In Remote File Viewer Remote Process Viewer ActiveSync 4.5

  8. Windows Mobile常用测试工具介绍 CETK(系统集成测试工具) Hopper(随机测试) Vsbenchmark (硬件性能测试) Visual unit(单元测试)

  9. Agenda • Windows Mobile 编程考虑 • Win32/MFC/WTL三种mobile上编程方式比较 • 设计Windows Mobile用户界面 • 窗口、基础控件 • 内核服务 • 文件系统 • POOM • MAPI • Cellcore API • UI自定义

  10. Windows Mobile编程考虑 • 1、Win32 API • 标准Win32 API的子集 • 部分简化的API函数 • 独特的Windows Mobile API函数 • 消息的考虑,消息通知机制 • 可能要修改的数据类型

  11. Windows Mobile编程考虑 • 2、Windows Mobile平台和外壳考虑 • 屏幕大小规格 (QCIF176X220, QVGA240x320, VGA480x640) • 更小的显示器、更灵活的通讯方式 • 平台硬件环境考虑 • 鼠标 触摸屏 • 键盘 软键盘、硬键、光标笔

  12. Windows Mobile编程考虑 • 3、基于Unicode 环境 • 在代码中包含Tchar.h,它包含所有的字符转换函数。 • 使用Win32字符串函数,而不是C run-time函数。 • 使用TCHAR和LPTSTR进行声明。声明一个变量为TCHAR类型,用户可以编译代码为Unicode和ASCII。 • 使用TEXT宏来转换一个字符串。 • 使用Cstring 和MultiByteToWideChar( ) 转换字符串

  13. Windows Mobile编程考虑 • Unicode C-Runtime函数 • ANSI string functions • strlen() - query length • strcpy() - copy string • strcat() - concatenate string • Unicode string functions • wcslen() - query length • wcscpy() - copy string • wcscat() - concatenate string • Bi-Modal string functions • _tcslen() - query length • _tcscpy() - copy string • _tcscat() - concatenate string

  14. Windows Mobile编程考虑 • Unicode C-Runtime转换函数 • Converting to Unicode • Converting from Unicode • mbstowcs( • wchar_t *wcstr, // Output string. • const char *mbstr, // Input string. • size_t count ); // Character count • wcstombs( • char *mbstr, // Output string. • const wchar_t *wcstr, // Input string. • size_t count ); // Character count

  15. Windows Mobile编程考虑 int myfunc(TCHAR *p) { TCHAR *pszFileName; pszFileName = (TCHAR*)malloc(MAXFILELEN); if (pszFileName) _tcsncpy(szFileName, p, MAXFILELEN); } 为了防止这样的错误发生,可以按照下面的代码来改写。 int myfunc(TCHAR *p) { TCHAR *pszFileName; pszFileName = (TCHAR*)malloc(MAXFILELEN * sizeof(TCHAR)); if (pszFileName) _tcsncpy(szFileName, p, MAXFILELEN); }

  16. Windows Mobile编程考虑 • 4、进程 只最多支持32个进程,默认至少开启5个进程: nk.exe :内核服务 FileSys.exe:文件系统服务 GWES.exe: GUI支持 device.exe:加载和维护驱动程序 services.exe管理和停止服务

  17. BOOL CreateProcess(LPCTSTR lpApplicationName, LPTSTR lpCommandLine, NULL, NULL, FALSE, DWORD dwCreationFlags, NULL, NULL, NULL, LPPROCESS_INFORMATION lpProcessInformation ); BOOL TerminateProcess( HANDLE hProcess, DWORD uExitCode ); • 创建和终止进程 • 调用CreateProcess 函数来创建进程. • 调用TerminateProcess 函数来终止进程。

  18. Windows Mobile编程考虑 • 5、线程 线程数量不限,跟内存大小有关。 • 创建线程,使用CreateThread函数 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); • 结束线程 VOID ExitThread( DWORD dwExitCode ); • 主线程结束,该进程也就结束

  19. Windows Mobile编程考虑 • 6、内存管理 ROM RAM 扩展 内存 (能够以现场执行: XIP) 其中Flash Card的程序在 执行时必须拷贝到RAM的 程序存储区,ROM则能够 以现场执行的方式,节约 了有价值的RAM 程序存储区 对象存储区 Wm 存储 结构 (T Card等Flash Card)

  20. Windows mobile支持虚拟内存、本地和分离堆,以及内存映射文件。 获取存储区使用情况: 获取系统当前的内存状态:GetSystemInfo RAM程序存储区:GlobalMemoryStatus RAM对象存储区:GetStoreInformation或GetDiskSpaceEx ROM存储区:需要根据OEM提供的函数在BSP层获取存储大小。

  21. 一个典型的WinCE下的内存处理消息: WM_HIBERNATE消息(发送给WS_OVERLAPPED样式的窗口,一般先发送 给后台程序)

  22. 设计Windows Mobile用户界面 • 设计概念 • 让用户得到控制权 • 使用熟悉的控件 • 保持界面的一致性 • 提供信息反馈 • 简捷的设计风格 • 支持多种输入方法(键盘,触笔)

  23. 设计Windows Mobile应用程序 • 应用程序设计 • UI尽量和PPC,Smartphone本身设计风格相统一 • 使用 WIN32 SDK MFC, C#设计界面 • 创建的程序类型EXE,DLL

  24. Windows Mobile Smartphone用户界面 • Windows Mobile Smartphone界面风格 Smartphone界面特性 1.使用左右软键,进行菜单操作 2.回退键的处理 3.列表框,编辑框,静态文本的大量使用 4.由于没有触摸屏,一般不使用按钮控件

  25. Windows Mobile Pocket PC用户界面 • Windows Mobile Pocket PC界面风格 Pocket PC界面特性 1.非常类似PC上的UI操作方式 2.可以使用左右软键,进行菜单操作 3.鼠标左键用触笔单击操作取代, 4.鼠标右键用触笔长按操作取代

  26. 窗口、基本控件 • 窗口 • 主要的输入和输出方式 • 用户通过窗口对手机进行操作 • 基本控件 • Button 按钮 • Static 文本 • Edit 编辑框 • CheckBox 复选框 • RadioBox 单选框 • List 列表控件 • ListCtrl ….. 列表视图控件

  27. 窗口(1) • 创建窗口 • 撤销窗口 HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, PVOID lpParam ); BOOL DestroyWindow( HWND hWnd );

  28. 窗口(2) • 注册窗口类 WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE (IDI_WIN32SAMPLE)); wc.hCursor = 0; wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wc.lpszMenuName = 0; wc.lpszClassName = szWindowClass; return RegisterClass(&wc);

  29. 窗口(3) • 窗口回调函数 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; RECT rc; switch (message) { case WM_COMMAND: break; case WM_CREATE: break;

  30. 内核服务(2) • 线程 • 创建线程,使用 CreateThread 函数.

  31. 文件系统 • 文件 • 文件名中不允许包含的字符‘*’ , ‘\\’, ‘/’,‘?’, ‘>’, ‘<’, ‘:’, ‘“’, ‘|’, 以及ASCII码值小于 32的字符. • 获取可使用的磁盘空间 GetDiskFreeSpaceEx • 打开、创建文件 CreateFile • Read/Write 文件操作 ReadFile ( ), WriteFile( )

  32. 文件操作示例 void OpenFileExample (void) { HANDLE hFile; hFile = CreateFile (TEXT("\MYFILE.TXT"), // Open MYFILE.TXT GENERIC_READ, // Open for reading FILE_SHARE_READ, // Share for reading NULL, // No security OPEN_EXISTING, // Existing file only FILE_ATTRIBUTE_NORMAL, // Normal file NULL); // No template file if (hFile == INVALID_HANDLE_VALUE) { // Your error-handling code goes here. return; } } // End of OpenFileExample code

  33. CE数据库系统 • 数据库 • 装备数据卷 • CeMountDBVol ( ) • 打开数据文件 • CeCreateDatabaseEx ( ) • 读写数据库 • CeReadRecordPropsEx ( ) • CeWriteRecordProps ( ) • 关闭数据库 • CloseHandle ( ) • 卸载数据卷 • CeUnmountDBVol ( )

  34. 注册表系统 • 注册表 • 打开注册表 • RegOpenKeyEx ,RegCreateKeyEx • 读写注册表 • RegQueryValueEx,RegSetValueEx • 列举注册表 • RegEnumKeyEx • 删除注册表 • RegDeleteValue,RegDeleteKey • 关闭注册表 • RegCloseKey • 刷新注册表 • RegFlushKey

  35. POOM • POOM • 全称 • Pocket Outlook Object Model,在CE上就有使用 • 功能 • 提供一系列的COM接口,能够方便的访问Windows Mobile内置数据库,如联系人,日程,任务数据库, 并使用POOM进行PC和Device上的联系人等的同步。 • Windows Mobile上的新增函数 • CalendarNewAppointment • ContactsNewContact… • Window Mobile上的Notification • 监测POOM数据的创建,修改,删除 • 当前开发的POOM相关应用 • 火拼速查 • 联系人群组管理

  36. MAPI • MAPI • 全称 • Messaging API, Windows Mobile所特有 • 功能 • 提供一系列的COM接口,能够方便的访问和操作Windows Mobile中的信息数据,如收件箱中的 短信,彩信,Email等,并可以对信息功能进行扩展 • Windows Mobile上的新增函数 • MailDisplayMessage • MailSwitchToAccount …. • MAPI上的Notification • 使用IMAPIAdviseSink接口接收信息改变通知 • 当前开发的MAPI相关应用 • 短信聊天 • 智能备份

  37. Cellcore API • Cellcore API:Windows Mobile特有 • 功能 • 用来操作无线相关功能(通话,短信,网络,SIM卡) • TAPI:实现通话等相关功能 • Telephony API (TAPI) 2.0 • SMS API:实现短信收发,读取功能 • SIM API:实现SIM卡读写相关操作 • RIL Function:直接通过RIL和Modem交互

  38. UI自定义 • 主要用于运营商定制 • 待机界面 • PPC: Today Plugin • Smartphone: Homescreen Plugin • 主菜单图标自定义 • 拨号盘自定义(Phone Canvas) • Menu extensibility • 开关机动画 • 网络参数预制(GPRS, WAP,彩信预制)

  39. Windows Mobile应用开发流程

  40. 结束 • Question?

More Related