在《windows程序设计》中,“字元”是什么意思

在《windows程序设计》中,“字元”是什么意思,第1张

字元(Character,Characters)-- 1 byte (8 bits) 为存放单位的 字符。

unicode,中文 GB, BIG5 -- 用 2 bytes 单位的 字符 叫 “宽字元”。

byte -- 字节。

没有直接关系。C语言是一种程序设计语言,windows程序设计是指特定一种环境。

C是语言,windows程序设计在Windows平台的程序设计,语言不限定(VB C# JAVA Delphi等),用的函数就是一些Windows API,就是只能运行在Windows平台下的程序,一般是带窗口的,当然控制台的也是,只要符合只能运行在windows下(用了Win32 API)。Windows的入口函数是WinMain但是,可以可以把WinMain封装成main。这个没什么太大的关系,QT GUI编程就是如此,但是入口函数就是main。

c语言是一种用于软件和系统开发的高级程序语言,而windows是一个系统,一种平台,windows程序设计就是在windows这个平台上进行软件开发,如在windows xp上安装vc++60软件进行程序开发。另一点就是windows这个系统是用c语言编写的

一、事件驱动的程序设计

1\传统的MS-DOS程序主要采用顺序的、关联的、过程驱动的程序设计方法。一个程序是一系列预先定义好的 *** 作序列的组合,它具有一定的开头、中间过程和结束。程序直接控制程序事件和过程的顺序。这样的程序设计方法是面向程序而不是面向用户的,交互性差,用户界面不够友好,因为它强迫用户按照某种不可更改的模式进行工作。

2\事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。

对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。

它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。

它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态。

二、 消息循环与输入

事件驱动围绕着消息的产生与处理展开,一条消息是关于发生的事件的消息。

事件驱动是靠消息循环机制来实现的。

消息是一种报告有关事件发生的通知。

消息类似于DOS下的用户输入,但比DOS的输入来源要广,Windows应用程序的消息来源有以下四种:

(1)输入消息:包括键盘和鼠标的输入。----------这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由应用程序来处理消息。

(2)控制消息:用来与Windows的控制对象,如列表框、按钮、检查框等进行双向通信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。

(3)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,象DDE消息(动态数据交换消息)要通过Windows的系统消息队列,而有的则不通过系统消息队列而直接送入应用程序的消息队列,如创建窗口消息。

(4)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。

Windows *** 作系统包括三个内核基本元件:GDI, KERNEL ,USER。

其中GDI(图形设备接口)负责在屏幕上绘制像素、打印硬拷贝输出,绘制用户界面包括窗口、菜单、对话框等。

系统内核KERNEL支持与 *** 作系统密切相关的功能:如进程加载,文本切换、文件I/O,以及内存管理、线程管理等。

USER为所有的用户界面对象提供支持,它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列。消息队列是一个系统定义的内存块,用于临时存储消息;或是把消息直接发给窗口过程。每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。

三、图形输出

Windows程序不仅在输入上与DOS程序不同,而且在程序输出上也与DOS有着很大不同,主要表现为:

1DOS程序独占整个显示屏幕,其他程序在后台等待。

2Windows程序的所有输出都是图形。

3Windows下的输出是设备无关的。-------Windows下的应用程序使用图形设备接口(GDI)来进行图形输出。GDI屏蔽了不同设备的差异,提供了设备无关的图形输出能力,Windows应用程序只要发出设备无关的GDI请求(如调用Rectangle画一个矩形),由GDI去完成实际的图形输出 *** 作。对于一台具有打印矩形功能的PostScript打印机来说,GDI可能只需要将矩形数据传给驱动程序就可以了,然后由驱动程序产生PostScript命令绘制出相应的矩形;而对于一台没有矩形输出功能的点阵打印机来说,GDI可能需要将矩形转化为四条线,然后向驱动程序发出画线的指令,在打印机上输出矩形。

四、GDI(图形设备接口)介绍:

GDI提供两种基本服务:创建图形输出和存储图象。

GDI提供了大量用于图形输出的函数,这些函数接收应用程序发出来的绘图请求、处理绘图数据并根据当前使用设备调用相应的设备驱动程序产生绘图输出。这些绘图函数分为三类:一是文字输出,二是矢量图形函数,用于画线、圆等几何图形,三是光栅(位图)图形函数,用于绘制位图。

GDI识别四种类型的设备:显示屏幕、硬拷贝设备(打印机、绘图机)、位图和图元文件。

前两者是物理设备,后两者是伪设备。

一个伪设备提供了一种在RAM里或磁盘里存储图象的方法。

位图存放的是图形的点位信息,占用较多的内存,但速度很快;图元文件保存的是GDI函数的调用和调用参数,占用内存较少,但依赖于GDI,因此不可能用某个设备来创建图元文件,而且速度比位图要慢。

GDI的图形输出是面向窗口的,面向窗口包含两层含义:

(1)每个窗口作为一个独立的绘图接口来处理,有它自己的绘图坐标。当程序在一个窗口中绘图时,首先建立缺省的绘图坐标,原点(0,0)位于窗口用户区的左上角。每个窗口必须独立的维护自己的输出。

(2)绘图仅对于本窗口有效,图形在窗口边界会被自动裁剪,也就是说窗口中的每一个图形都不会越出边界。即使想越出边界,也是不可能的,窗口会自动的防止其他窗口传过来的任何像素。这样,你在窗口内绘图时,就不必担心会偶然覆盖其他程序的窗口,从而保证了Windows下同时运行多个任务时各个窗口的独立性。

五、资源共享

对于DOS程序来说,它运行时独占系统的全部资源,包括显示器、内存等,在程序结束时才释放资源。而Windows是一个多任务的 *** 作系统,各个应用程序共享系统提供的资源,常见的资源包括:设备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话线等。

Windows要求应用程序必须以一种能允许它共享Windows资源的方式进行设计,它的基本模式是这样的:

1向Windows系统请求资源;

2使用该资源;

3释放该资源给Windows以供别的程序使用。

即使最有经验的Windows程序员也常常会忽略第三步。如果忽略了这一步,轻则当时不出错,但过一会儿出现程序运行出现异常情况,或干扰别的程序正常运行;重则立即死机,比如设备上下文没有释放时。

在Windows应用程序设计中,CPU也是一种非常重要的资源,因此应用程序应当避免长时间的占用CPU资源(如一个特别长的循环);如果确实需要这样做,也应当采取一些措施,以让程序能够响应用户的输入。主存也是一个共享资源,要防止同时运行的多个应用程序因协调不好而耗尽内存资源。

应用程序一般不要直接访问内存或其他硬件设备,如键盘、鼠标、计数器、屏幕或串口、并口等。Windows系统要求绝对控制这些资源,以保证向所有的应用程序提供公平的不中断的运行。如果确实要访问串并口,应当使用通过Windows提供的函数来安全的访问。

六、Windows程序的组成

编写一个典型的Windows应用程序,一般需要:

1C,CPP源程序文件:源程序文件包含了应用程序的数据、类、功能逻辑模块(包括事件处理、用户界面对象初始化以及一些辅助例程)的定义。

2H,HPP头文件:头文件包含了CPP、C源文件中所有数据、模块、类的声明。当一个CPP、C源文件要调用另一个CPP、C中所定义的模块功能时,需要包含那个CPP、C文件对应的头文件。

3资源文件:包含了应用程序所使用的全部资源定义,通常以RC为后缀名。这里的资源是应用程序所能够使用的一类预定义工具中的一个对象,包括:字符串资源、加速键表、对话框、菜单、位图、光标、工具条、图标、版本信息和用户自定义资源等。

在DOS程序设计过程中,所有的界面设计工作都在源程序中完成。而在Windows程序设计过程中,象菜单、对话框、位图等可视的对象被单独分离出来加以定义,并存放在资源源文件中,然后由资源编译程序编译为应用程序所能使用的对象的映象。资源编译使应用程序可以读取对象的二进制映象和具体数据结构,这样可以减轻为创建复杂对象所需要得程序设计工作。

程序员在资源文件中定义应用程序所需使用的资源,资源编译程序编译这些资源并将它们存储于应用程序的可执行文件或动态连接库中。

七、程序中引用资源的好处:

1降低内存需求:当应用程序运行时,资源并不随应用程序一起装入内存,而是在应用程序实际用到这些资源时才装入内存。在资源装入内存时,它们拥有自己的数据段,而不驻留于应用程序数据段中;当内存紧张时,可以废弃这些资源,使其占用的内存空间供他用,而当应用程序用到这些资源时才自动装入,这种方式降低了应用程序的内存需求,使一次可运行更多的程序,这也是Windows内存管理的优点之一。

2便于统一管理和重复利用:将位图、图标、字符串等按资源文件方式组织便于统一管理和重用。比如,将所有的错误信息放到资源文件里,利用一个函数就可以负责错误提示输出,非常方便。如果在应用程序中要多次用到一个代表公司的徽标位图,就可以将它存放在资源文件中,每次用到时再从资源文件中装入。这种方式比将位图放在一个外部文件更加简单有效。

3应用程序与界面有一定的独立性,有利于软件的国际化:由于资源文件独立于应用程序设计,使得在修改资源文件时(如调整对话框大小、对话框控制位置),可以不修改源程序,从而简化了用户界面的设计。另外,目前所提供的资源设计工具一般都是采用“所见即所得”方式,这样就可以更加直观、可视的设计应用程序界面。由于资源文件的独立性,软件国际化工作也非常容易。比如,现在开发了一个英文版的应用程序,要想把它汉化,只需要修改资源文件,将其中的对话框、菜单、字符串资源等汉化即可,而无需直接修改源程序。

但是,应用程序资源只是定义了资源的外观和组织,而不是其功能特性。例如,编辑一个对话框资源,可以改变对话框的安排和外观,但是却没有也不可能改变应用程序响应对话框控制的方式。外观的改变可以通过编辑资源来实现,而功能的改变却只能通过改变应用程序的源代码,然后重新编译来实现。

C、CPP编译器将C源程序编译成目标程序,然后使用连接程序将所有的目标程序(包括各种库)连接在一起,生成可执行程序。在制作Windows应用程序时,编译器还要为引出函数生成正确的入口和出口代码。

连接程序生成的可执行文件还不能在Windows环境下运行,必须使用资源编译器对其进行处理。资源编译器对可执行文件的处理是这样的:如果该程序有资源描述文件,它就把已编译为二进制数据的资源加入到可执行文件中;否则,仅对该可执行文件进行相容性标识。应用程序必需经过资源编译器处理才可以在Windows环境下运行。

八、结构化程序设计和面向对象的程序设计

面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题。

结构化程序设计从系统的功能入手,按照工程的标准和严格的规范将系统分解为若干功能模块,系统是"实现模块功能的函数和过程"的集合。由于用户的需求和软、硬件技术的不断发展变化,按照功能划分设计的系统模块必然是易变的和不稳定的。这样开发出来的模块可重用性不高。

面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务(功能)为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。

面向对象程序设计同结构化程序设计相比最大的区别就在于:前者首先关心的是所要处理的数据,而后者首先关心的是功能。

面向对象程序设计是一种围绕真实世界的概念来组织模型的程序设计方法,它采用对象来描述问题空间的实体。一般的认为,对象是包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和(或)与它交互的能力。它是一些属性及服务的一个封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的 *** 作”这一公式来表达。

"类"是具有相同 *** 作功能和相同的数据格式(属性)的对象的集合。

类可以看作抽象数据类型的具体实现。

数据类型是指数据的集合和作用于其上的 *** 作的集合,而抽象数据类型不关心 *** 作实现的细节。

从外部看,类型的行为可以用新定义的 *** 作加以规定。

类为对象集合的抽象,它规定了这些对象的公共属性和方法;对象为类的一个实例。苹果是一个类,而放在桌上的那个苹果则是一个对象。

对象和类的关系相当于一般的程序设计语言中变量和变量类型的关系。

消息是向某"对象"请求服务的一种表达方式。对象内有方法和数据,外部的用户或对象对该对象提出的服务请求,可以称为向该对象发送消息。

"合作"是指两个对象之间共同承担责任和分工。

在Windows中,程序的基本单位不是过程和函数,而是窗口。一个窗口是一组数据的集合和处理这些数据的方法和窗口函数。从面向对象的角度来看,窗口本身就是一个对象。Windows程序的执行过程本身就是窗口和其他对象的创建、处理和消亡过程。Windows中的消息的发送可以理解为一个窗口对象向别的窗口对象请求对象的服务过程。因此,用面向对象方法来进行Windows程序的设计与开发是极其方便的和自然的。

支持。Windows内核版本号为WindowsNT61,是支持面向对象的程序设计的。Windows7是由微软公司(Microsoft)2009年10月22日发布的桌面端 *** 作系统,内核版本号为WindowsNT61。

C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的DMRitchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。 Windows程序设计:Windows编程圣经,曾经伴随着近50万Windows程序员步入编程殿堂,成长为IT时代的技术精英。 ,涵盖基础知识和中高级主题,全面地介绍了Windows程序设计所涉及的细枝末节,旨在帮助读者从高屋建瓴的角度,建立完整的知识体系,为以后的职业生涯奠定良好的基础。全书共3部分23章。第1~12章着重介绍基础知识,第13~18章的主题为图形,第19~23章涉及更多高级主题。

第1章 起步

11 Windows环境

111 Windows简史

112 Windows的方方面面

113 动态链接

12 Windows编程选项

121 API及内存管理模式

122 语言选择

123 编程环境

124 API文档

13 你的第一个Windows程序

131 字符模式

132 Windows对应程序

133 头文件

134 程序入口

135 MessageBox函数

136 编译、链接及运行

2

21 字符集简史

211 美国标准

212 美国以外的世界

213 扩展ASCII

214 双字节字符集

215 Unicode的解救方案

22 宽字符和c语言

221 char数据类型

222 更宽的字符

223 宽字符库函数

224 维护一个源代码文件

23 宽字符和Windows

231 Windows头文件的类型

232 Windows函数调用

233 Windows的字符串函数

234 在Windows中使用printf

235 格式化的消息框

236 国际化之于本书

第3章 窗口与消息

31 窗口的创建

311 系统结构概述

312 HELLOWIN程序

313 通盘考虑

314 窗口类的注册

315 窗口的创建

316 窗口的显示

317 消息循环

318 窗口过程

319 消息的处理

3110 声音文件的播放

3111 WM_PAINT消息

3112 WM_DESTROY消息

32 Windows编程中的若干难点

321 究竟是谁调用谁

322 队列消息和非队列消息

323 速战速决

 41 绘制和重绘

411 WM_PAINT消息

412 有效矩形和无效矩形

42 GDI简介

421 设备环境

422 获取设备环境句柄:方法一

423 绘制信息结构

424 获取设备环境句柄:方法二

425 TEXTOUT函数详解

426 系统字体

427 字符大小

428 文本尺寸的度量

429 文本的格式化

4210 综合使用

4211 SYSMETSlC窗口过程

不能,因为你的窗口类是同一个,它们是关系在一起的,如果你关闭其中一个窗口,那么另一个也将关闭,最好的解决办法就是创建两个窗口类,现在光凭我讲,你肯定也不知道怎么做,所以推荐你去看看孙鑫的MFC教程,里面有讲到这个问题。希望我的回答对你有帮助

以上就是关于在《windows程序设计》中,“字元”是什么意思全部的内容,包括:在《windows程序设计》中,“字元”是什么意思、C语言和windows程序设计有什么关系、Windows应用程序有哪些特点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9430709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存