`
lingzantia
  • 浏览: 150009 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

[翻译]-WinCE 程序设计 (3rd 版)--1.5 Windows应用程序剖析

阅读更多

Windows应用程序剖析
基于Windows的编程远不同于基于MS-DOS或Unix的编程。只要是程序需要,任何时候基于MS-DOS或Unix的程序都可以使用getc-或putc风格的函数从键盘读取字符并写到屏幕上。这是MS-DOS或Unix程序所使用的典型的"Pull"(拉)风格,这种风格是面向过程的,而一个Windows程序,则使用"Push"(推)模式。在这种模式下,必须编写程序来响应来自操作系统的通知,比如一个键被压下去了或者收到一个重绘屏幕的命令。

Windows应用程序并不从操作系统请求输入,而是由操作系统通知应用程序输入产生了。操作系统通过发送消息(messages)给应用程序窗口来完成这些通知。所有窗口都是窗口类的具体实例。在进一步深入之前,让我们先确保理解这些术语。

窗口类
窗口是屏幕上的一个区域,除了特殊情况,基本上都是矩形。窗口有一些基本参数,比如位置参数--x,y和z(窗口在屏幕其它窗口之上或者之下)--可视性以及层次关系--窗口与系统桌面形成父子窗口关系,系统桌面也是一个窗口。

每个被创建的窗口都是窗口类的一个具体实例。窗口类是一个模板,为该类的所有窗口定义了许多共同属性。换句话说,属于同一个类的窗口有同样的属性。这些共享的属性中最重要的是窗口过程。

窗口过程
窗口类里窗口过程中的代码定义了同一个类里所有窗口的行为。窗口过程处理发到窗口的所有通知和请求。这些通知,要么是操作系统发给窗口,告诉窗口有事件发生,窗口必须回应,要么是其他窗口发来的,向该窗口查询信息。

这些通知是以消息的形式发送的。消息实际就是对窗口过程的一次调用,带有参数指出通知或者查询的种类。当有事件发生,例如窗口被移动、被改变大小或有键被按下去等,就会发送消息。标识消息的值由Windows定义。应用程序使用预定义好的常量,例如WM_CREATE和 WM_MOVE,来表示消息。因为有很多消息可被发送,所以当窗口类对某个消息没有特殊处理的必要时,Windows提供了一个默认处理函数来处理传递这些消息。

消息生命周期
让我们回头一会,看一下Windows是如何协调发到系统里各个窗口的各种消息的。Windows监视系统的所有输入,例如键盘、鼠标、触摸屏以及其它可以产生影响窗口的事件的硬件。当事件发生后,消息就被构成并定向给特定的窗口。Windows没有直接调用窗口过程,而是加了一个中间步骤。消息被放到拥有该窗口的应用程序的消息队列里了。当应用程序准备接收消息的时候,它把消息从队列里取出来,并告诉Windows发送该消息到应用程序适当的窗口上。

你可能会认为这个过程中涉及许多中间步骤,那么你是对的。就让我们分解一下这个过程吧。
1、当事件发生,Windows就构成一个消息并放到拥有目的窗口的应用程序的消息队列里。和在XP里一样,在Windows CE中,每个应用程序有自己单独的消息队列[1] (这与Windows3.1及更早的Windows版本不同,那时只有唯一一个系统范围内的消息队列)。事件发生及构成一个消息都要比应用程序处理它们的速度快。虽然程序最好能快速响应或者用户希望看到应用程序快速响应,但是队列允许应用程序按自己的速率处理消息。消息队列允许Windows在运做中设置一个通知并继续完成其它任务,而不是仅仅限制在只响应收到消息的这个应用程序。

2、应用程序把消息从消息队列中移出来,并回调Windows来分派消息。似乎很奇怪应用程序从队列里获得消息却只是简单的回调Windows来处理这个消息,对这种方式,解释如下:应用程序从队列里获取消息,这使得应用程序在请求Windows把消息分派到相应窗口之前,可以预处理这些消息。许多情况下,应用程序会调用Windows里不同的函数来处理具体的各种消息。

3、Windows分发消息,更确切的说,是Windows调用相应的窗口过程。没有让应用程序直接调用窗口过程,而是间接调用,这允许Windows协调这个窗口过程的调用与系统里的其它事件。虽然此刻消息并不在另外一个队列里,但Windows在调用窗口过程之前,可能需要做一些预处理。但无论如何,这种调度方式减少了应用程序的责任,不用程序去决定适当的目的窗口,而是由Windows负责了。

4、窗口过程处理消息。所有的窗口过程都有相同的调用参数:被调用的窗口实例的句柄、消息参数、两个普通参数,包含与消息相关的数据。窗口过程用窗口句柄区分窗口的每个实例。消息参数,指明窗口必须响应的事件。两个普通包含与消息相关的数据。例如,WM_MOVE消息指出窗口将被移动,其中一个普通参数指向一个包含窗口新坐标的结构。

注:技术上,Windows CE应用程序的每个线程都有一个消息队列。稍后我将在本书里讨论线程。

分享到:
评论

相关推荐

    lazarus-1.0.8-fpc-2.6.2-cross-arm-wince-win32

    lazarus-1.0.8-fpc-2.6.2-cross-arm-wince-win32 freepascal 用于开发WINCE程序

    WINCE程序设计 WINCE程序设计

    总之,WinCE程序设计涉及从操作系统定制到应用程序开发的全过程,需要掌握WinCE的架构、API、设备驱动以及系统优化等多方面知识。通过学习和实践,开发者可以充分利用WinCE的优势,开发出适应各种嵌入式场景的高效...

    Lazarus-0.9.28.2-fpc-2.2.4-cross-arm-wince-win32

    标题 "Lazarus-0.9.28.2-fpc-2.2.4-cross-arm-wince-win32" 暗示了一个用于开发针对Windows CE(掌上设备操作系统)应用程序的开源集成开发环境(IDE)——Lazarus的一个特定版本。Lazarus是Free Pascal编译器(FPC...

    .net-cf-wince-curve.rar_WINCE 曲线_WINCE 曲线_wince 曲线控件_曲线 wince_

    .NET CF for Windows CE (Wince) 曲线控件是在嵌入式系统开发中,特别是在分析仪器行业的软件开发中常用的一种技术。这篇文章将详细介绍如何在Windows CE平台上利用C#.NET来绘制曲线,以及如何利用特定的控件进行...

    wince之应用程序设计

    在本文中,我们将深入探讨Windows CE(简称WinCE)的应用程序设计,这是一个针对嵌入式操作系统的专业知识领域。Windows CE是微软开发的一个可裁剪、实时性较强的嵌入式操作系统,广泛应用于各种智能设备,如掌上...

    wince程序设计 wince程序设计 wince程序设计

    - WinAPI:WinCE提供了一套与Windows桌面系统类似的API,使得移植Windows应用程序变得相对容易。 4. 应用程序模型: 在WinCE中,应用程序可以是独立的可执行文件,也可以是服务或动态链接库。系统支持多线程和...

    hobd汉化版-wince

    Wince不支持所有的Windows桌面应用,但它提供了类似的操作界面和API,使得开发者可以创建特定于硬件的应用程序。 4. **汉化软件**:汉化是为了适应中文用户而对英文软件进行翻译和调整的过程。这包括菜单、对话框、...

    qt-wince安装.pdf

    Qt-WinCE是Qt框架在Windows CE操作系统上的移植版本,它允许开发者使用Qt工具集创建在Windows CE设备上运行的应用程序。本文将详细介绍如何在Windows CE平台上安装和配置Qt环境,以及如何编译Qt-WinCE程序。 ### 一...

    wince程序设计教程

    Windows CE(简称Wince)是微软推出的一种嵌入式操作系统,广泛应用于掌上电脑、工业设备、汽车电子等场合。本教程将深入探讨Wince程序设计的基础与高级特性,帮助初学者快速掌握这一领域的核心技能。 一、Windows ...

    C# 各种文件格式的转换 ----winCE试验版

    C# 各种文件格式的转换 ----winCE试验版 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软 主要包括C# ASP.NET SQLDBA 源码 毕业设计 开题报告 答辩PPT等

    qt-wince安装.docx

    Qt-WinCE是Qt框架在Windows CE操作系统上的移植版本,允许开发者使用Qt库创建在Windows CE设备上运行的应用程序。本文档详细介绍了如何在SAMSUNG i718+手机上搭建Qt嵌入式开发环境并安装Qt-WinCE。 1. **准备工作**...

    VS2005-CoreCon-x86-WINCE600,wince开发软件安装包

    "VS2005-CoreCon-x86-WINCE600"这个安装包就是专门为Windows CE 6.00平台的开发设计的,它包含了构建、调试和测试嵌入式应用程序所需的工具和组件。 首先,"CoreCon"是Visual Studio 2005中的核心连接组件,它是...

    Wince程序设计 第三版

    《Wince程序设计 第三版》是一本深入探讨Windows CE.NET平台编程的权威指南,主要针对希望在嵌入式系统中开发应用程序的程序员。这本书详细介绍了如何利用Microsoft的嵌入式操作系统来创建高效、功能丰富的应用程序...

    博创2410开发板光盘资料----WINCE实验指导书

    - **实验目的**: 掌握使用MFC框架开发WinCE应用程序的方法。 - **实验内容**: - 设计简单的用户界面。 - 实现基本的应用逻辑。 - 测试应用程序的功能。 #### 4.3 基于WINCEDIRECTSHOW的多媒体播放机实验 - **...

    最新Qt-WinCE全解

    将Qt与WinCE结合,可以创建强大的嵌入式应用程序,提供丰富的用户界面和强大的功能。 ### Qt for WinCE 的环境搭建 1. **安装基础环境**: 首先,你需要在开发机上安装Windows CE的开发环境,通常包括Visual Studio...

    wince程序设计中文版1

    wince程序设计中文影印版 积分要多了,不好意思,我也不知道怎么取消 一共三个压缩包,须全部下载了解压,只让传10m,没办法啊 part1 http://download.csdn.net/source/257557 part2 ...

    WINCE5.0应用程序

    在Windows CE 5.0(简称WINCE5.0)平台上进行应用程序开发,开发者通常会利用Visual Studio 2005(VS2005)作为集成开发环境(IDE)。这个平台提供了丰富的工具和资源,使得开发者能够创建高效、可移植的嵌入式应用...

    WinCe程序设计第4版

    《WinCe程序设计第4版》是一本深入探讨Windows CE操作系统下程序开发的专业书籍,针对.wince环境提供了全面且深入的指导。Windows CE是微软公司为嵌入式设备设计的一个实时操作系统,它在各种小巧便携设备、工业控制...

    IDA教程-WinCE ARM调试器入门教程.pdf

    IDA教程-WinCE ARM调试器入门教程.pdf

    基于ARM-WinCE的电机监控系统设计.pdf

    基于ARM-WinCE的电机监控系统设计是指使用ARM处理器作为核心,Windows CE操作系统作为软件平台,实现对电机的监控和控制。该系统可以对电机的步进电机和直流电机的表面温度、转速和运行时间等参数进行实时监控。 ...

Global site tag (gtag.js) - Google Analytics