⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap1_3.htm

📁 着重介绍基于C++的web编程技术
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>Windows应用程序设计的特点</title>
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#3973DE" alink="#3973DE" style="text-decoration: none">
<div align="center"><center>

<table border="0" width="615" cellspacing="0" cellpadding="0">
  <tr>
    <td><div align="center"><center><table border="0" width="615" cellpadding="0" cellspacing="0">
      <tr>
        <td width="451" bgcolor="#15397D"></td>
        <td width="164" bgcolor="#000000"><p align="right"><a href="../../index.htm"><strong><font color="#FFFFFF">Visual C++网络教程</font></strong></a></td>
      </tr>
    </table>
    </center></div><b><font FACE="Times New Roman" SIZE="3"><p ALIGN="CENTER"></font><font SIZE="3"><br>
    </font><font color="#3973DE" FACE="Times New Roman" SIZE="3">1.3 Windows</font><font SIZE="3" color="#3973DE">应用程序设计的特点</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">如前所述,</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">操作系统具有</font><font FACE="Times New Roman" SIZE="3">MS-DOS</font><font SIZE="3">操作系统无可比拟的优点,因而受到了广大软件开发人员的亲睐。但是,熟悉</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">环境下软件开发的程序员很快就会发现,</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">编程与</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">环境下编程相比有很大的不同。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">要求以一种全新的思维方式进行程序设计,主要表现为以下几点:</font><b><font FACE="Times New Roman" SIZE="3"></p>
    <p>1.3.1</font><font SIZE="3">事件驱动的程序设计</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">传统的</font><font FACE="Times New Roman" SIZE="3">MS-DOS</font><font SIZE="3">程序主要采用顺序的、关联的、过程驱动的程序设计方法。一个程序是一系列预先定义好的操作序列的组合,它具有一定的开头、中间过程和结束。程序直接控制程序事件和过程的顺序。这样的程序设计方法是面向程序而不是面向用户的,交互性差,用户界面不够友好,因为它强迫用户按照某种不可更改的模式进行工作。它的基本模型如图</font><font FACE="Times New Roman" SIZE="3">1.1</font><font SIZE="3">所示。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态。它的框图如图</font><font FACE="Times New Roman" SIZE="3">1.2</font><font SIZE="3">所示</font><font FACE="Times New Roman" SIZE="3">:</p>
    <p></font><font SIZE="3">在图中,输入界面</font><font FACE="Times New Roman" SIZE="3">1-4</font><font SIZE="3">并没有固定的顺序,用户可以随机选取,以任何合理的顺序来输入数据。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="CENTER"></font><img src="T1_1.gif" alt="T1_1.tif (69737 bytes)" WIDTH="189" HEIGHT="321"><font SIZE="3"></p>
    <p ALIGN="CENTER"></font><font size="1">图<font FACE="Times New Roman">1.1 </font>过程驱动模型</p>
    <p ALIGN="CENTER"></font><img src="T1_2.gif" alt="T1_2.tif (200700 bytes)" WIDTH="565" HEIGHT="302"><b><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="CENTER"></font><font size="1">图</font><font FACE="Times New Roman" size="2"><small>1.2</small></font><font size="1">事件驱动程序模型</font><font FACE="Times New Roman" size="2"></p>
    <p></font><font FACE="Times New Roman" SIZE="3">1.3.2 </font><font SIZE="3">消息循环与输入</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">事件驱动围绕着消息的产生与处理展开,一条消息是关于发生的事件的消息。事件驱动是靠消息循环机制来实现的。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">消息是一种报告有关事件发生的通知。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">消息类似于</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">下的用户输入,但比</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">的输入来源要广,</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">应用程序的消息来源有以下四种:</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">(</font><font FACE="Times New Roman" SIZE="3">1</font><font SIZE="3">)输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">将它们送入应用程序消息队列中,由应用程序来处理消息。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">(</font><font FACE="Times New Roman" SIZE="3">2</font><font SIZE="3">)控制消息:用来与</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的控制对象,如列表框、按钮、检查框等进行双向通信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">(</font><font FACE="Times New Roman" SIZE="3">3</font><font SIZE="3">)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,象</font><font FACE="Times New Roman" SIZE="3">DDE</font><font SIZE="3">消息(动态数据交换消息)要通过</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的系统消息队列,而有的则不通过系统消息队列而直接送入应用程序的消息队列,如创建窗口消息。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">(</font><font FACE="Times New Roman" SIZE="3">4</font><font SIZE="3">)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><font SIZE="3">在</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">应用程序下,可以通过</font><font FACE="Times New Roman" SIZE="3">getchar()</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">getch()</font><font SIZE="3">等函数直接等待键盘输入,并直接向屏幕输出。而在</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">下,由于允许多个任务同时运行,应用程序的输入输出是由</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">来统一管理的。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>Windows</font><font SIZE="3">操作系统包括三个内核基本元件:</font><font FACE="Times New Roman" SIZE="3">GDI, KERNEL ,USER</font><font SIZE="3">。其中</font><font FACE="Times New Roman" SIZE="3">GDI(</font><font SIZE="3">图形设备接口</font><font FACE="Times New Roman" SIZE="3">)</font><font SIZE="3">负责在屏幕上绘制像素、打印硬拷贝输出,绘制用户界面包括窗口、菜单、对话框等。系统内核</font><font FACE="Times New Roman" SIZE="3">KERNEL</font><font SIZE="3">支持与操作系统密切相关的功能:如进程加载,文本切换、文件</font><font FACE="Times New Roman" SIZE="3">I/O</font><font SIZE="3">,以及内存管理、线程管理等。</font><font FACE="Times New Roman" SIZE="3">USER</font><font SIZE="3">为所有的用户界面对象提供支持,它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列。消息队列是一个系统定义的内存块,用于临时存储消息;或是把消息直接发给窗口过程。每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。框图如下:</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="CENTER"></font><img src="T1_3.gif" alt="T1_3.tif (207496 bytes)" WIDTH="456" HEIGHT="327"><font SIZE="3"></p>
    <p ALIGN="CENTER"></font><font size="2">图<font FACE="Times New Roman">1.3 </font>消息驱动模型<font FACE="Times New Roman"></p>
    <p></font></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p>1.3.3 </font><font SIZE="3">图形输出</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p>Windows</font><font SIZE="3">程序不仅在输入上与</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">程序不同,而且在程序输出上也与</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">有着很大不同,主要表现为:</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>1.DOS</font><font SIZE="3">程序独占整个显示屏幕,其他程序在后台等待。而</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的每一个应用程序对屏幕的一部分进行处理。</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">程序可以直接往屏幕上输出,而</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">是一个多窗口的操作系统,由操作系统来统一管理屏幕输出;每个窗口要输出内容时,必须首先向操作系统发出请求</font><font FACE="Times New Roman" SIZE="3">(GDI</font><font SIZE="3">请求</font><font FACE="Times New Roman" SIZE="3">)</font><font SIZE="3">,由操作系统完成实际的屏幕输出工作。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p>2.Windows</font><font SIZE="3">程序的所有输出都是图形。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">提供了丰富的图形函数用于图形输出,这对输出图形是相当方便的,但是由于字符也被作为图形来处理,输出时的定位要比</font><font FACE="Times New Roman" SIZE="3">DOS</font><font SIZE="3">复杂的多。</font><font FACE="Times New Roman" SIZE="3"></p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -