📄 1_3 windows˪
字号:
状态栏是一般位于窗口底部,用于输出菜单的说明和其他一些提示信息(如鼠标器位置、当前时间、某种状态等)。</P>
<P class=content4><B>图标</B></P>
<P class=content4>
图标是一个用于提醒用户的符号,它是一个小小的图象,用于代表一个应用程序。当一个应用程序的主窗口缩至最小时,就呈现为一个图标。</P>
<P class=content4><B>光标</B></P>
<P class=content4>
Windows的光标是显示屏上的一个位图,而不是DOS下的一条下划线。光标用于响应鼠标或其他定位设备的移动。程序可以通过改变光标的形状来指出系统中的变化。例如,程序常显示一个计时的光标,用于指示用户一些漫长的操作正在进行之中。程序也可以通过改变光标让用户知道程序进入了一种特殊模式,例如,绘图程序经常改变光标来反映被绘制对象的类型,是直线还是圆或其他。</P>
<P class=content4><B>插入符</B></P>
<P class=content4>
插入符(caret)是一个微小并闪烁的位图,作为一个键盘控制的指针。控制键盘输入的窗口可以创建一个插入符去通知用户:窗口现在可以进行键盘输入。在DOS环境下,一般使用“光标”作为键盘指针,而在Windows中,“光标”被作为鼠标指针。<BR>
应用程序必须维护这个插入符。在Windows中,在一个时间只允许有一个插入符存在。因此,要使用插入符号作为键盘指针的应用程序必须在取得焦点时创建一个插入符号,并在失去焦点后删除它。</P>
<P class=content4><B>对话框</B></P>
<P class=content4>
对话框是一种特殊的窗口,它提供了一种接收用户输入、处理数据的标准方法。特别的,当用户输入了一个需要附加信息
的命令时,对话框是接收输入的标准方法。比如,假设用户要求系统打开一个文件,对话框就可以提供一个让用户从一组文件中选择一个文件的标准方法。如前所述,在一般情况下,在选择菜单名字后面跟着省略号(...)的菜单项通常会弹出一个对话框。图1.5给出了查找对话框的一个例子。</P>
<P class=content4><IMG alt="T1_5.jpg (8482 字节)"
height=126 src="" width=389></P>
<P class=content4>图1.5 查找对话框</P>
<P class=content4><B>控件</B></P>
<P class=content4>
在图1.5中,查找对话框是一个独立的窗口,它显示信息并接收用户的输入。在对话框中,还包含了许多小的窗口,这些窗口被称为控件。控件是应用程序用来获得用户特定信息的窗口,比如要打开文件的名字或自动换行的设置等。应用程序也会通过控件获取所需的信息,以便控制程序的某种属性,如自动换行特性的开关。<BR>
控件总是与其他窗口连用,典型的是对话框,但也可以用在普通窗口之中。常见的控件有:按钮、编辑框、列表框、组合框、静态文本等等。</P>
<P class=content4><B>消息框</B></P>
<P class=content4>
消息框是用于给用户一些提示或警告的窗口。例如,消息框能够在应用程序执行某项任务过程中出现问题时通知用户。下图所示的对话框警告用户输入了一个不合法的文件名。</P>
<P class=content4><IMG alt="T1_6.jpg (4709 字节)"
height=115 src="" width=185></P>
<P class=content4>图1.6</P>
<P> </P>
<P class=content4><B>1.3.5 资源共享</B></P>
<P class=content4>
对于DOS程序来说,它运行时独占系统的全部资源,包括显示器、内存等,在程序结束时才释放资源。而Windows是一个多任务的操作系统,各个应用程序共享系统提供的资源,常见的资源包括:设备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话线等。<BR>
Windows要求应用程序必须以一种能允许它共享Windows资源的方式进行设计,它的基本模式是这样的:<BR>1.向Windows系统请求资源;<BR>2.使用该资源;<BR>3.释放该资源给Windows以供别的程序使用。<BR>
即使最有经验的Windows程序员也常常会忽略第三步。如果忽略了这一步,轻则当时不出错,但过一会儿出现程序运行出现异常情况,或干扰别的程序正常运行;重则立即死机,比如设备上下文没有释放时。<BR>
在Windows应用程序设计中,CPU也是一种非常重要的资源,因此应用程序应当避免长时间的占用CPU资源(如一个特别长的循环);如果确实需要这样做,也应当采取一些措施,以让程序能够响应用户的输入。主存也是一个共享资源,要防止同时运行的多个应用程序因协调不好而耗尽内存资源。<BR>
应用程序一般不要直接访问内存或其他硬件设备,如键盘、鼠标、计数器、屏幕或串口、并口等。Windows系统要求绝对控制这些资源,以保证向所有的应用程序提供公平的不中断的运行。如果确实要访问串并口,应当使用通过Windows提供的函数来安全的访问。</P>
<P class=content4><B>1.3.6 Windows应用程序组成</B></P>
<P class=content4>
前面介绍了Windows应用程序的特点,现在让我们看看编写一个Windows程序需要做哪些工作。编写一个典型的Windows应用程序,一般需要:<BR>
1.C,CPP源程序文件:源程序文件包含了应用程序的数据、类、功能逻辑模块(包括事件处理、用户界面对象初始化以及一些辅助例程)的定义。<BR>
2.H,HPP头文件:头文件包含了CPP、C源文件中所有数据、模块、类的声明。当一个CPP、C源文件要调用另一个CPP、C中所定义的模块功能时,需要包含那个CPP、C文件对应的头文件。<BR>
3.资源文件:包含了应用程序所使用的全部资源定义,通常以.RC为后缀名。注意这里说的资源不同与前面提到的资源,这里的资源是应用程序所能够使用的一类预定义工具中的一个对象,包括:字符串资源、加速键表、对话框、菜单、位图、光标、工具条、图标、版本信息和用户自定义资源等。<BR>
其中CPP、C和头文件同DOS下的类似,需要解释的是资源文件。在DOS程序设计过程中,所有的界面设计工作都在源程序中完成。而在Windows程序设计过程中,象菜单、对话框、位图等可视的对象被单独分离出来加以定义,并存放在资源源文件中,然后由资源编译程序编译为应用程序所能使用的对象的映象。资源编译使应用程序可以读取对象的二进制映象和具体数据结构,这样可以减轻为创建复杂对象所需要得程序设计工作。<BR>
程序员在资源文件中定义应用程序所需使用的资源,资源编译程序编译这些资源并将它们存储于应用程序的可执行文件或动态连接库中。在Windows应用程序中引入资源有以下一些好处:<BR>
1.降低内存需求:当应用程序运行时,资源并不随应用程序一起装入内存,而是在应用程序实际用到这些资源时才装入内存。在资源装入内存时,它们拥有自己的数据段,而不驻留于应用程序数据段中;当内存紧张时,可以废弃这些资源,使其占用的内存空间供他用,而当应用程序用到这些资源时才自动装入,这种方式降低了应用程序的内存需求,使一次可运行更多的程序,这也是Windows内存管理的优点之一。<BR>
2.便于统一管理和重复利用:将位图、图标、字符串等按资源文件方式组织便于统一管理和重用。比如,将所有的错误信息放到资源文件里,利用一个函数就可以负责错误提示输出,非常方便。如果在应用程序中要多次用到一个代表公司的徽标位图,就可以将它存放在资源文件中,每次用到时再从资源文件中装入。这种方式比将位图放在一个外部文件更加简单有效。<BR>
3.应用程序与界面有一定的独立性,有利于软件的国际化:由于资源文件独立于应用程序设计,使得在修改资源文件时(如调整对话框大小、对话框控制位置),可以不修改源程序,从而简化了用户界面的设计。另外,目前所提供的资源设计工具一般都是采用“所见即所得”方式,这样就可以更加直观、可视的设计应用程序界面。由于资源文件的独立性,软件国际化工作也非常容易。比如,现在开发了一个英文版的应用程序,要想把它汉化,只需要修改资源文件,将其中的对话框、菜单、字符串资源等汉化即可,而无需直接修改源程序。<BR>
但是,应用程序资源只是定义了资源的外观和组织,而不是其功能特性。例如,编辑一个对话框资源,可以改变对话框的安排和外观,但是却没有也不可能改变应用程序响应对话框控制的方式。外观的改变可以通过编辑资源来实现,而功能的改变却只能通过改变应用程序的源代码,然后重新编译来实现。<BR>
Windows应用程序的生成同DOS下类似,也要经过编译、链接两个阶段,只是增加了资源编译过程,基本流程如下图:</P>
<P class=content4><IMG alt="T1_7.gif (4581 字节)"
height=300 src="" width=401></P>
<P class=content4>图1.7 应用程序生成过程</P>
<P class=content4>
C、CPP编译器将C源程序编译成目标程序,然后使用连接程序将所有的目标程序(包括各种库)连接在一起,生成可执行程序。在制作Windows应用程序时,编译器还要为引出函数生成正确的入口和出口代码。<BR>
连接程序生成的可执行文件还不能在Windows环境下运行,必须使用资源编译器对其进行处理。资源编译器对可执行文件的处理是这样的:如果该程序有资源描述文件,它就把已编译为二进制数据的资源加入到可执行文件中;否则,仅对该可执行文件进行相容性标识。应用程序必需经过资源编译器处理才可以在Windows环境下运行。</P>
<P align=right><FONT size=2>[<A
href="http://leson.hongnet.com/vc/102.htm">上一页</A>][<A
href="http://leson.hongnet.com/vc/104.htm">下一页</A>]</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -