您好,欢迎访问三七文档
——应用程序开发嵌入式操作系统WindowsCE课程安排•提纲WindowsCE应用程序开发工具C++与MFCMFC框架中的消息机制菜单编程对话框编程MFC中基本控件及其使用C或C++WindowsCE操作系统Win32应用程序C或C++PlatformBuilderWin32应用程序.NETCompactFrameworkC#或VB.NETVisualStudio.NET本机应用程序模型托管应用程序模型WindowsCE5.0下的应用开发模型eMbeddedVisualC++编译运行时支持WindowsCE应用程序开发工具开发工具比较•EmbeddedVisualC++:–直接编译C/C++代码到CPU指令–可使用Win32API存取WindowsCE函数–可以使用MFC(MicrosoftFoundationClasses)及ATL(ActiveXTemplateLibrary)库函数•PlatformBuilder:–直接编译C/C++代码到CPU指令–可使用Win32API存取WindowsCE函数•VisualStudio.NET:–编译成独立于CPU的中间语言代码–不直接使用Win32API,而使用.NETCompactFramework库来存取操作系统函数EmbeddedVisualC++PlatformBuilderWindowsCE开发工具•EmbeddedVisualC++开发工具EmbeddedVisualC++是WindowsCE所包含的强有力的应用程序开发工具。利用EmbeddedVisualC++,程序员将在友好的环境下开发基于WindowsCE的应用程序,并能访问详细的平台软件开发工具包文档。EmbeddedVisualC++开发工具与MicrosoftVisualC++相似的开发环境,不同的是EmbeddedVisualC++提供了特定的工具与资源来开发WindowsCE应用程序。与MicrosoftVisualC++不同之处有:随EVC安装附带的SDK内容非常少,远远不够软件使用,必须安装WindowsCE才能得到全部的SDK。随VC附带的SDK则包含全部内容。EVC编译器支持多种嵌入式CPU,支持多种指令集。VC只支持X86指令集。为了能在开发机上调试,EVC包含一个模拟器,而VC不具备,也不需要。EVC包含远程调试工具,用于调试在实际设备上运行的程序,而VC只包含本地调试工具。EmbeddedVisualC++的主要组件项目工作区文本编辑器资源编辑器编译器CE设备模拟器平台管理器调试器应用程序向导源码浏览器类向导诊断工具在线帮助编辑窗口输出窗口工作区窗口菜单栏工具栏EmbeddedVisualC++开发工具界面模拟器应用程序开发在WindowsCE下开发应用程序大致可分为3个步骤:①安装合适的SDK;②编写代码和调试;③发布应用程序。安装SDK编码、调试发布应用程序结束应用程序开发•从PlatformBuilder导出SDK(SoftwareDevelopmentKit)•使用EVC进行开发前要安装SDK•使用PlatformManager导出SDK关于SDK•SDK包含了一个特定平台的所有函数;•导出的SDK是一个Windows安装程序(.msi文件);•在使用EVC进行开发前,必须安装特定平台的SDK,而且进行开发时必须了解特定平台支持的函数,SDK中不包括的函数不能使用;•Microsoft提供了一些SDK,如StandardSDK、PocketPC2003、SmartPhone2003等等。开发人员可以使用这些SDK进行相应程序开发,但是如果程序中使用的函数在这些SDK中不支持,则程序会失败;•SDK取决于包含在平台中的操作系统配置、运行时库、OAL(OEMAdaptationLayer)和设备驱动程序。•只要工作站上有EVC,就可以安装SDK,而不必要安装PlatformBuilder。•安装完成后,在EVC的开发环境里,可以看到安装的SDK。在这里选择SDK关于SDK注意:使用PlatformManager•PlatformManager管理桌面和目标设备的连接–用EVC下载应用程序到目标平台上–使用远程工具连接目标平台•有两个级别的连接–应用程序级–内核级•PlatformManager包含两部分–桌面端部分---和SDK有关–设备平台部分---由PlatformBuilder创建,并包含在了WindowsCE的镜像里课程安排•提纲WindowsCE应用程序开发工具C++与MFCMFC框架中的消息机制菜单编程对话框编程MFC中基本控件及其使用独特的WindowsCE•微处理器多样化•WindowsCE不运行现有的程序•WindowsCE有严格的内存限制•WindowsCE硬件并不十分标准化微处理器多样化•其它Windows平台是Intelx86兼容的微处理器•WindowsCE设备支持的微处理器包括:–ARM(包括Marvell的XScale)–SHx–MIPS–x86应用程序:X86ARM……WindowsCE不运行现有的程序•现有Windows程序必须重新编译才能在WindowsCE上运行•有些API被删除,有些被代替,还增加了一些其它的API(扩展的子集)•字符集的区别,Windows2000支持Unicode和ANSI,Windows98只支持ANSI,WindowsCE使用Unicode•提供了新的针对特定平台的控件,如命令栏(提供的功能类似菜单和工具栏,以减少占用屏幕的空间),而某些标准控件却减少了其功能字符和字符串的不同表示•ANSI字符和字符串–‘H’–“HelloWorld”–存储为char(signed)或者明确指明为unsigned•Unicode字符和字符串–L‘H’–L“HelloWorld”–存储为w_char(unsignedshort)•双模式–TEXT(‘H’)–TEXT(“HelloWorld”)MFC:_T宏_T(“Hello”)WindowsCE有严格的内存限制•WindowsCE只有4G的虚拟内存空间•2GB是为操作系统保留的•应用程序的2GB分成了33个slot(槽)•每个槽32MB•每个槽对应一个进程WindowsCE硬件并不十分标准化•PC机组成:运算器、控制器、存储器、输入输出设备•各个WindowsCE设备的结构各不相同,而且通常没有鼠标、显示器(如果需要显示则大多使用触摸屏)MFC支持但是WindowsCE编程仍然是Windows编程,有相同的消息循环、相同的窗口,大部分相同的资源和控件等,仍然是事件驱动的编程模型。Windows编程模型WM_PAINTWM_KEYDOWNWM_COMMANDWM_SIZEWM_LBUTTONDOWN消息处理函数消息处理函数消息处理函数消息处理函数消息处理函数消息处理函数DefWindowProc消息队列应用程序WinMain消息循环窗口过程发送消息未处理的消息检索的消息Windows程序的生命周期下面简要说明一个Windows程序的生命周期:用户启动应用程序,调用WinMain函数。WinMain函数注册一个窗口类,标记应用程序主窗口的类型。WinMain函数调用CreateWindowsAPI函数来创建应用程序主窗口。WinMain函数调用ShowWindowsAPI函数来显示窗口。WinMain函数调用UpdateWindowsAPI函数使应用程序重画客户区的内容。WinMain函数进入一个消息循环,并一直循环直到收到WM_QUIT消息,在消息循环中,它调用GetMessage函数从应用程序消息队列中获取一个消息,调用TranslateMessangAPI函数把与键盘相关的消息进行转换,调用DispatchMessage函数来把分消息发给应用程序不同的窗口。一个窗口收到Windows消息后,分析它的消息类型,并执行合适的消息处理函数。如果没有该消息处理函数,则调用DefWindowsProcAPI函数以提供缺省的处理。当应用程序消息循环遇到WM_QUIT消息时,退出WinMain函数,终止应用程序运行。上述描述适用于采用C【不使用MFC】编写的程序。Windows基础-事件MicrosoftWindows是用户驱动的系统,它大量的时间用于响应用户操作,这样的系统称为事件驱动系统。当用户按下一个键、移动鼠标或单击一个鼠标按钮,计算机硬件便通知Windows系统一个事件已经发生了,并告诉它事件的类型、发生的时间以及与屏幕相关事件的位置【例如坐标值】。事件产生的主要原因有三个:第一种通过输入设备,如键盘和鼠标;第二种通过屏幕上的可视对象如菜单、工具栏和对话框控件【采用鼠标和键盘产生可视事件】;第三种由Windows本身产生,例如恢复一个被其它窗口覆盖的窗口。总的来说,一个标准的Win32源程序包括两部分:源代码文件和资源文件。源代码文件由.C/.CPP/.H等文本文件构成;资源文件由.RC资源描述文件、.BMP/.ICO/.CUR等图像文件及.FON等其他二进制文件构成。源代码文件经过C/C++编译器编译后形成目标文件;资源文件经过资源编译器编译后形成.RES二进制资源。最后,链接器负责把目标文件、二进制资源及库文件等统一链接,最终形成可执行文件。Win32应用程序开发流程对话框编辑器图像编辑器字体编辑器.DLG.BMP.ICO.CUR.FON.C.RC.H.OBJ.LIB.DEF.RES链接器RC编译器C/C++编译器.EXEWin32APIWin32API是微软32位Windows平台的应用程序编程接口,所有在Win32平台上运行的应用程序都会直接或间接地调用这些函数。Win32平台是微软32位Windows的统称,包括3大类产品:桌面Windows、服务器Windows和嵌入式Windows。Win32应用程序Win32API桌面WindowsWindows95Windows98WindowsXP……服务器WindowsWindowsNTWindows2000ServerWindowsServer2003……嵌入式WindowsWindowsCEWindowsNTEmbeddedWindowsXPEmbedded……MFC简介•MFC(MicrosoftFoundationClasses),微软基础类,同VCL类似,是一种ApplicationFramework,随微软VisualC++开发工具发布。该类库提供一组通用的可重用的类库供开发人员使用,大部分类均从CObject直接或间接派生,只有少部分类例外。•MFC应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC提供了MFCAppWizard自动生成框架。•Windows应用程序中,MFC的主包含文件为Afxwin.h。•此外MFC的部分类为MFC/ATL通用,可以在Win32应用程序中单独包含并使用这些类。•由于它的易用性,初学者常误认为VC++开发必须使用MFC。这种想法是错误的,作为ApplicationFramework,MFC的使用只能提高某些情况下的开发效率,起到辅助作用,而不能替代整个Win32程序设计。C++与MFC•MFC是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。VC++是Windows下开发人员使用的专业C++SDK(SDK,StandardSoftWareDevelopKit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编程的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE)。MFC是一个非外挂式的软件包、类库,只不过MFC类是微软为VC++专配的。C++与MFC•MFC是WinAPI与C++的结合。API,即微软提供的Windows
本文标题:应用程序开发
链接地址:https://www.777doc.com/doc-3977696 .html