2007年东软实训嵌入式方向-Window编程答案.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:9 大小:106KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

2007年东软实训嵌入式方向-Window编程答案.doc

2007年东软实训嵌入式方向-Window编程答案.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《东软实训嵌入式方向考试题-windows编程》答案名词解释队列消息和非队列消息队列消息就是windows将消息发送到每个线程所专有的队列中,然后由程序自主处理,这种消息基本上是由用户输入产生(wm_keydown,wm_keyup,wm_char,wm_mouse,以及wm_paint,wm_timer,wm_quit)或者是调用postmessage,postthreadmessage产生的消息;非队列消息就是直接发送给窗口过程的消息,就是直接调用窗口过程,上述消息以外的一般都是这种类型。进程与线程进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。线程是操作系统分时调度分配CPU时间的基本实体。一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程并发地执行;一个进程的所有线程共享它的虚拟地址空间、全局变量和操作系统资源。窗口与句柄窗口:由应用程序创建的一个用于接收用户输入和显示输出的矩形区域。由非客户区和客户区组成,是windows界面显示的基本单位。句柄--一个32位数值,用于标识windows的各种对象,它是windows系统内部表的索引值,而非对象所在的内存地址。MFC消息映射机制MFC使用ClassWizard帮助实现消息映射,它在源码中添加一些消息映射的内容,并声明和实现消息处理函数,这些被添加的内容包括:在类的定义(头文件)里,增加了消息处理函数声明,并添加一行声明消息映射的宏DECLARE_MESSAGE_MAP。在类的实现(实现文件)里,使用IMPLEMENT_MESSAGE_MAP宏实现消息映射。一般情况下,这些声明和实现是由MFC的ClassWizard自动来维护的。在类的实现(实现文件)里,添加消息处理函数的实现框架。线程局部存储线程局部存储是一个实现Thread的全局数据的机制,并且这些数据仅仅在这个Thread中可见,因为这些数据保存在该Thread的ThreadDataBase中:在每一个ThreadDataBase中都定义了一个64元的DWORD数组用来保存这些数据。同时操作系统也提供了相应的函数来完成对这些数据的操作,如:TlsAlloc,TlsFree,TlsSetValue,TlsGetValue。填空1.windows的所谓事件驱动的核心是(消息)。2.MFC中可以创建的两种线程是(用户界面线程)和(工作者线程)。3.常用的线程同步对象包括(关键段/临界区对象)、(事件对象)、(互斥对象)、(信号量对象)。4.通常情况下,一个次级线程要为主线程完成某种特定类型的任务,这就隐含着表示在主线程和次级线程之间需要建立一个通信的通道。一般情况下,有下面的几种方法实现这种通信任务:(使用全局变量)、(使用事件对象)、(使用消息)。简答题消息的发送方式和寄送方式的区别是什么?答:被发送的消息是否会被立即处理,函数是否立即返回。被发送的消息会被立即处理,处理完毕后函数才会返回;被寄送的消息不会被立即处理,他被放到一个先进先出的队列中,一直等到应用程序空线的时候才会被处理,不过函数放置消息后立即返回。实际上,发送消息到一个窗口处理过程和直接调用窗口处理过程之间并没有太大的区别,他们直接的唯一区别就在于你可以要求操作系统截获所有被发送的消息,但是不能够截获对窗口处理过程的直接调用。以寄送方式发送的消息通常是与用户输入事件相对应的,因为这些事件不是十分紧迫,可以进行缓慢的缓冲处理,例如鼠标、键盘消息会被寄送,而按钮等消息则会被发送。消息的结构是怎样定义的?消息的处理方式有哪几种?并作简要说明。答:操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成消息的结构体MSG来传递给应用程序,MSG结构定义如下:typedefstructtagMSG{HWNDhWnd;//目标窗口句柄UINTmessage;//消息标识WPARAMwParam;//消息参数1(附加信息,16位)LPARAMlParam;//消息参数2(附加信息,32位)DWORDtime;//消息发送时间POINTpt;//消息发送时鼠标的屏幕坐标}MSG;消息处理方式:应用程序通过窗口过程来处理消息:非队列消息由Windows直接送给目的窗口的窗口过程,队列消息由::DispatchMessage等派发给目的窗口的窗口过程。窗口过程被调用时,接受四个参数:awindowhandle(窗口句柄);amess