文档详情

嵌入式操作系统-windows ce

xzh****18
实名认证
店铺
PPT
647.50KB
约81页
文档ID:50032119
嵌入式操作系统-windows ce_第1页
1/81

嵌入式操作系统 ——Windows CE第八章 应用程序设计• 独特的Windows CE • Windows CE编程基础 • Windows CE编程技术内容概述1 独特的Windows CE• 微处理器多样化 • CE不运行现有的程序 • CE有严格的内存限制 • CE硬件并不十分标准化 • 文件I/O的差别1.1 微处理器多样化• 其它Windows平台是Intel x86兼容的微处理 器 • CE设备支持的微处理器包括: – ARM(包括Intel 的XScale) – SHx – MIPS – x861.2 CE不运行现有的程序• 现有Windows程序必须重新编译才能在Wince上 运行 • 有些API被删除,有些被代替,还增加了一些其它 的API • 字符集的区别,Windows 2000支持Unicode和 ANSI, Windows 98只支持ANSI,WinCE使用 Unicode • 提供了新的针对特定平台的控件,如命令栏(提 供的功能类似菜单和工具栏,以减少占用屏幕的 空间),而某些标准控件却减少了其功能1.3 CE有严格的内存限制• Wince只有4G的虚拟内存空 间• 2GB是为操作系统保留的• 应用程序的2GB分成了33个 slot(槽)• 每个槽32MB• 每个槽对应一个进程1.4 CE硬件并不十分标准化• PC机组成:运算器、控制器、存储器、输 入输出设备 • 各个CE设备的结构各不相同,而且通常没 有鼠标、显示器(如果需要显示则大多使 用触摸屏) 但是Windows CE编程仍然是Windows编程 ,有相同的消息循环、相同的窗口,大部 分相同的资源和控件等,仍然是事件驱动的 编程模型2 Windows CE编程基础• Windows消息处理机制 • 创建Win32应用程序 • Unicode • 诊断输出APIs • 文件I/O2.1 Windows 消息处理机制• 操作系统发送消息给应用程序,应用程序 响应相应的消息,进行消息处理Windows 产生 一个消息发送消息到拥有 窗口的应用程序 的消息队列中应用程序预处 理消息窗口过程处理该 消息应用程序删除该 消息并回叫 Windows发送该 消息Windows发送该 消息,即调用适 当的窗口过程Windows 消息处理机制代码示例代码来源:Page101-108 Programming Microsoft Windowss CE.NET 3rd edition, Douglas Boling,Microsoft Press KeyTrac.h #define dim(x) sizeof(x)/sizeof(x[0]) ……//定义一个结构体,来表示消息和对应的处理函数 struct decodeUINT{ UINT Code; //消息 //处理函数 LRESULT (*Fnx)(HWND,UINT,WPARAM,LPARAM); }; …… //注册主窗口 int InitApp(HINSTANCE); //创建主窗口 HWND InitInstance(HINSTANCE,LPWSTR,int); //清理工作 int TermInstance(HINSTANCE,int); //窗口过程 LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM )//下面几个函数是相应的消息处理函数 LRESULT DoCreateMain(HWND,UINT,WPARAM,LPARAM); LRESULT DoPaintMain(HWND,UINT,WPARAM,LPARAM); LRESULT DoKeysMain(HWND,UINT,WPARAM,LPARAM); LRESULT DoDestroyMain(HWND,UINT,WPARAM,LPARAM);KeyTrac.cpp #include #include “KeyTrac.h“ #include //应用程序名(使用的是Unicode/ANSI通用形式) const TCHAR szAppName[ ]=TEXT(“KeyTrac”); //程序句柄 HINSTANCE hInst; …… TCHAR szMsgTxt[64];//消息及其处理函数结构体数组 const struct decodeUINT MainMessages[ ]={WM_CREATE,DoCreateMain,WM_PAINT,DoPaintMain,WM_KEYUP,DoKeysMain, …… WM_KEYDOWN,DoKeysMain, WM_SYSKEYUP,DoKeysMain, WM_DESTROY,DoDestroyMain };//程序的入口点是WinMain int WINAPI WinMain( HINSTANCE hInstance, //程序的句柄 HINSTANCE hPrevInstance, //为了兼容Win16程序而设置,总为0 LPTSTR lpCmdLine, //指向一个包含命令行文本的Unicode字符串 int nCmdShow) /*确定了该程序主窗口的初始状态 在Windows CE中,这个参数的值只允许有3种状态 正常(SW_SHOW) 隐藏//(SW_HIDE) 可见却不是活动窗口(SW_SHOWNOACTIVATE) */{MSG msg; //消息 int rc=0; HWND hwndMain; //主窗口 rc=InitApp(hInstance); //注册主窗口 if(rc) return rc; hwndMain=InitInstance(hInstance,lpCmdLine, nCmdShow);//创建主窗口初始化 if(hwndMain==0) return 0x10;int InitApp(HINSTANCE hInstance){WNDCLASS wc;wc.cbClsExtra=0;……wc.hInstance=hInstance; //句柄wc.lpfnWndProc=MainWndProc; //指定窗口过程函数wc.lpszClassName=szAppName; //程序名……if(RegisterClass( //注册窗口类return 0; }{MSG msg; //消息int rc=0;HWND hwndMain; //主窗口rc=InitApp(hInstance); //注册主窗口if(rc) return rc; hwndMain=InitInstance(hInstance,lpCmdLine,nCmdShow) ;//创建主窗口初始化if(hwndMain==0)return 0x10;HWND InitInstance(HINSTANCE hInstance,LPWSTR lpCmdLine,int nShowCmd){HWND hWnd;hInst=hInstance;hWnd=CreateWindow(szAppName, TEXT(“KeyTrac“),WS_VISIBLE,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL,NULL,hInstance,NULL); if(!IsWindow(hWnd))return 0;ShowWindow(hWnd,nShowCmd); /*使窗口的属性和主程序//指定的相同*/UpdateWindow(hWnd); /*强制Windows发送 WM_PAINT消//息给刚创建的窗口*/return hWnd;} // InitInstance 结束{MSG msg; //消息int rc=0;HWND hwndMain; //主窗口rc=InitApp(hInstance); //注册主窗口if(rc) return rc; hwndMain=InitInstance(hInstance,lpCmdLine,nCmdShow) ;//创建主窗口并初始化if(hwndMain==0)return 0x10;while(GetMessage( /*将键盘消息转换成字符消 息*/DispatchMessage( /*通知操作系统将消息发送 到应用程序适当的窗口,事实上就是操作系统调用相应的 窗口过程,在此程序中就是调用MainWndProc */}return TermInstance(hInstance,msg.wParam); /*清理工 作,如释放内存等*/} //窗口过程,由操作系统调用 LRESULT CALLBACK MainWndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam) { int i; for(i=0;i

用于没有开头的 Windows CE 系统, 因为最后的选项(即典型Hello World应 用程序)要求有窗口管理器 • 典型 Hello World应用程序 当平台支持全部窗口和GWES的图形部分时选 择典型 ‘Hello World’ 应用程序创建Win32应用程序• 更改BIB文件 – 最好在PROJECT.BIB文件中修改 – 通过Platform Builder修改PROJECT.BIB文件 • PROJECT.BIB文件内容 – MODULES • 通常是可执行程序,默认为XIP(就地执行) • 此部分的文件通常是非压缩的 – FILES • 包含静态数据文件 • 此部分的文件为压缩的• Windows消息处理机制 • 创建Win32应用程序 • Unicode • 诊断输出APIs • 文件I/O2 Windows CE编程基础2.3 Unicode• Unicode具备的功能 • 字。

下载提示
相似文档
正为您匹配相似的精品文档