




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,应用程序开发,嵌入式操作系统WindowsCE,课程安排,提纲WindowsCE应用程序开发工具C+与MFCMFC框架中的消息机制菜单编程对话框编程MFC中基本控件及其使用,C或C+,WindowsCE操作系统,Win32应用程序,C或C+,PlatformBuilder,Win32应用程序,.NETCompactFramework,C#或VB.NET,VisualStudio.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+,PlatformBuilder,WindowsCE开发工具,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;编写代码和调试;发布应用程序。,应用程序开发,从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)SHxMIPSx86,应用程序:X86ARM,WindowsCE不运行现有的程序,现有Windows程序必须重新编译才能在WindowsCE上运行有些API被删除,有些被代替,还增加了一些其它的API(扩展的子集)字符集的区别,Windows2000支持Unicode和ANSI,Windows98只支持ANSI,WindowsCE使用Unicode提供了新的针对特定平台的控件,如命令栏(提供的功能类似菜单和工具栏,以减少占用屏幕的空间),而某些标准控件却减少了其功能,字符和字符串的不同表示,ANSI字符和字符串H“HelloWorld”存储为char(signed)或者明确指明为unsignedUnicode字符和字符串LHL“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_PAINT,WM_KEYDOWN,WM_COMMAND,WM_SIZE,WM_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应用程序开发流程,Win32API,Win32API是微软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下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,比如VB、VC+、Java等编程语言函数本质上全部源于API。因此用它们开发出来的应用程序都能工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现。这其实也是一种必要,微软如果不提供API,这个世上对Windows编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾。MFC是微软对API函数的专用C+封装。这种结合一方面让用户使用微软的专业C+SDK来进行Windows下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Windows下用C+&MFC编制软件时的大量细节,如应用程序实现消息的处理、设备环境绘图。但这种结合是以方便为目的的,也要付出一定代价,因此造成了MFC对类封装中的一定程度的的冗余和迂回,但这些都是可以接受的。,课程安排,提纲WindowsCE应用程序开发工具C+与MFCMFC框架中的消息机制菜单编程对话框编程MFC中基本控件及其使用,MFC框架中的消息机制,Windows程序设计是一种事件驱动方式的程序设计,主要基于消息的。当用户需要完成某种功能时,需要调用OS某种支持,然后OS将用户的需要包装成消息,并投入到消息队列中,最后应用程序从消息队列中取走消息并进行响应。,消息映射,当Windows调用哪一个函数,在由C编写的Windows程序中,在程序开始【WinMain函数中】设置WinProc的名字,然后采用这个名字编写函数。在WinProc函数中,使用C/C+switch语句,根据不同的消息,调用相应的消息处理函数。在MFC中,可以不用编写窗口程序,只要编写消息处理函数,MFC通过消息映射来为消息查找相关的消息处理函数。消息映射是一个将消息和成员函数相互关联的表,但并非使用冗长的虚表。MFC为执行消息映射在内部所做的工作隐藏在某些十分复杂的宏当中,但“使用”本身相当简单。,消息映射添加到类方法,消息映射添加到一个类的步骤:通过将DECLARE_MESSAGE_MAP()语句添加到类声明中,声明消息映射;通过放置标识消息的宏来执行消息映射,相应的类将在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()的调用之间处理消息;添加成员函数来处理消息。/实现信息映射机制BEGIN_MESSAGE_MAP(CAdbonWZQDlg,CDialog)ON_BN_CLICKED(IDC_BUTNEW,OnButnew)ON_BN_CLICKED(IDC_BUTBACK,OnButback)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()ON_WM_PAINT()END_MESSAGE_MAP(),消息队列,消息队列:操作系统为每个应用程序建立一个消息队列,消息队列是个先进先出的缓冲区,其中每个元素都是一个消息,OS将生成的每个消息按先后顺序放进消息队列中,应用程序总是取走当前消息队列中的第一条消息,应用程序取走消息后便知道用户的操作和程序的状态,然后对其处理即消息响应,消息响应通过编码实现。,课程安排,提纲WindowsCE应用程序开发工具C+与MFCMFC框架中的消息机制菜单编程对话框编程MFC中基本控件及其使用,菜单编程(1),菜单在Windows输入中占据着重要地位。尽管每个应用程序可能有不同的键盘和触摸笔界面,但几乎所有的菜单结构对于Windows用户来说都很熟悉。WindowsCE在使用菜单方面与其他Windows程序有些不同,最明显的不同是在WindowsCE系统中,菜单并不是标准窗口的一部分。在WindowsCE中,菜单被附加到为窗口创建的命令栏控件上。除了这个变化之外,在大多数情况下,菜单的功能和应用程序处理选择菜单的方式与其他版本的Windows相同。由于这一部分与桌面版MFC是大体相同的,这里仅作一个基本的介绍。,菜单编程(2),菜单资源完全定义了菜单最初的外观。菜单项可以是灰色的,或者具有复选标志,而菜单栏可以将菜单项分组。还可能有多级弹出式菜单。如果第一级菜单项与子菜单项关联,那么,该菜单项还带有一个向右箭头符号。与VisualC+一样,EVC中有一个菜单资源编辑工具,使用起来非常简单。利用该工具,可以在所见所得的环境中编辑菜单。每个菜单项都有一个定义该项所有特征的属性对话框。结果资源定义存储在应用程序的资源脚本(RC)文件中。每个菜单项都与一个在resource.h中定义的ID相关联,例如ID_FILE_OPEN。,菜单响应的过程介绍,MFC中菜单项消息如果利用ClassWizard来对菜单项消息进行响应,则菜单消息传递顺序:View类-Doc类-CMainFrame类-App类。菜单消息一旦在其中一个类中响应则不再在其它类中查找响应函数。具体过程:当点击一个菜单项时,最先接收到菜单项消息的是CMainFrame框架类,CMainFrame框架类将会把菜单项消息交给它的子窗口View类,由View类首先进行处理;如果View类检测到没对该菜单项消息做响应,则View类把菜单项消息交由文档类Doc类进行处理;如果Doc类检测到Doc类中也没对该菜单项消息做响应,则Doc类又把该菜单项消息交还给View类,由View类再交还给CMainFrame类处理。如果CMainFrame类查看到CMainFrame类中也没对该消息做响应,则最终交给App类进行处理。,课程安排,提纲WindowsCE应用程序开发工具C+与MFCMFC框架中的消息机制菜单编程对话框编程MFC中基本控件及其使用,对话框编程(1),一般来说,有两种对话框,模态对话框和非模态对话框。使用模态对话框,在对话框关闭之前,用户不能在同一个应用程序的其他地方工作。使用非模态对话框,当对话框还在屏幕上时,用户仍然可以在应用程序的另一个窗口中工作。选择模态对话框,还是非模态对话框,实际上是取决于应用程序。模态对话框的编程相对容易些。对话框本身也是一个窗口,它始终与Windows资源相关联,这些资源标识对话框元素,并指定它的布局。对话框包含许多名为控件的元素。对话框控件包括编辑控件、按钮、列表框、静态文本、树状视图、进度指示器、滑块等等。Windows使用特殊的分组逻辑和Tab键次序来管理这些控件。,对话框编程(2),模态对话框是最常用的对话框。用户的操作,打开一个对话框,用户在对话框中输入数据,然后关闭对话框。在工程中增加一个模态对话框的步骤:使用对话框编辑器来创建包含不同控件的对话框资源。对话框编辑器更新工程的资源文件,以包括新的对话框资源,并且,它使用对应的#define常量来更新该工程的resourse.h文件。使用ClassWizard来创建CDialog的派生类,并且将它与第一步中创建的资源相关联。C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年各类产业园区笔试面试题目
- 体育教学技能训练课件
- 2025年煤气工程师岗位面试宝典专业知识题预测与解答技巧
- 商业计划书暨路演(模版)
- 农业信息技术教学课件
- 用药安全警示案例课件
- 江苏苏州2011-2020年中考满分作文90篇
- 河北省张家口市桥西区2024-2025学年度第二学期期末考试七年级语文试卷(含答案)
- 《雨林》课文教学课件
- 新解读《GB-T 35003 - 2018非易失性存储器耐久和数据保持试验方法》
- 2025秋季开学第一课完整版课件
- 2025重庆对外建设集团招聘41人笔试参考题库附答案解析
- 2025年军队专业技能岗位文职人员招聘考试(炊事员)历年参考题库含答案详解(5套)
- 高警示药品风险管理
- 2025南方航空“梦起航”航务联合培养招聘笔试历年参考题库附带答案详解
- 2025年新乡事业单位招聘考试笔试试卷(附答案)
- 科研审计管理办法
- 《电工》国家职业技能鉴定教学计划及大纲
- 2025年标准货物出口合同范本(中英文版)
- 2025年新钢铁安全员考试题库及答案
- 2025版电子购销合同模板
评论
0/150
提交评论