
是错误的,一般只有程序启动时才能有资源模块装入内存。就算是一个什么软件和程序都不安装,只是一个裸系统,那它的所有程序模块也不是现在最高配置的电脑能承受的,你也可以观察每打开不同的程序,它进程发生的相应的变化就能得知。
二、多窗体程序设计
当应用程序功能较强和分类较多,程序和用户的交互频繁时,如果只用一个窗体和用户进行交互,一方面难以进行合乎美观原则的设计,另一方面分类工作很难,设计出来的界面不符合友好原则。这时使用多重窗体程序设计,增强程序界面的友好性。
多窗体指的应用中有多个窗体,它们之间没有绝对的从属关系。每个窗体的界面设计与单窗体的完全一样,只是在设计之前应先建立窗体,这可以通过菜单“工程”/“添加窗体”命令实现。程序代码是针对每个窗体编写的,当然,应注意窗体之间存在的先后顺序和相互调用的关系。所以,多重窗体实际上是单一窗体的集合,而单一窗体是多重窗体程序设计的基础。
一般说来,多窗体的设计基本分成以下几个步骤:
◆分析应用要求,将其功能划分为不同的几部分
◆分别创建各个窗体、模块
◆在创建窗体时,除各窗体自身要完成的功能外,还要考虑窗体之间的调用关系
◆点击[工程]/[属性]菜单,在[启动对象]中选择应用运行时首先执行的对象
◆运行应用程序,检验应用及各窗体的运行情况
1、多窗体程序设计常用的方法
在单窗体程序设计中,所有的 *** 作都在一个窗体中完成,不需要在多个窗体中切换。而在多窗体程序中,需要打开、关闭、隐藏或显示指定的窗体,这可以通过相应的语句和方法来实现。
在多窗体程序设计经常用到下面四种方法:Load,Show Hide和Unload
(1)Load方法
它的语法结构如下:
Load [窗体名称]
使用Load方法调用的窗体被存入内存,并不显示出来,同时会产生一个Form_Load()事件。
例如:Load Form2 '将Form2窗体存入内存
(2)Show方法
它的语法结构如下:
[窗体名称]Show
Show方法用来显示被调用的窗体。Show方法兼有装入和显示两种功能,也就是说,在执行Show方法时,如果窗体不在内存中,则Show方法会自动的把窗体调入内存,然后再显示出来。
例如: Load Form2
Form2Show '将Form2存于内存,并显示Form2窗体
(3)Hide方法
它的语法结构如下:
[窗体名称]Hide
使用Hide方法会隐藏被调用的窗体,既不在屏幕上显示,但仍在内存中(与Unload方法不同),被调用的窗体中的属性等已经处于无效的状态。
例如:
Form1Hide
Form2Show '将Form隐藏,并显示Form2窗体
(4)Unload方法
它的语法结构如下:
Unload [窗体名称]
使用Unload方法会清除内存中指定的窗体,与此同时,窗体中的变量和属性等都会处于无效的状态,在移去窗体的同时会产生一个Form_QueryUnload()事件。
例如:Form1Show
Unload Form2'显示Form1窗体,从内存中移去Form2窗体。
2、一个多窗体程序设计示例
下面就以一个示例来说明如何运进多窗体的程序设计(见教材P283)。
(1)启动新工程
1)设置属性
首先启动一个新的工程,屏幕出现一个空白的窗体,窗体的属性设置如下:
属性 设置
Name
Form1
Caption
Form1
BorderStyle
3-Fixed Dialog'窗体的大小不能够在程序的运行过程中改变
MDIChild
False
StartUpPosition
2-CenterScreen'窗体在程序的运行过程中始终位于屏幕的中央
Moveable
False'在程序的运行过程中不能够移动窗体
2)添加控件
在空白的窗体上添加如下控件:五个Label控件、四个TextBox控件和两个CommandButton控件。
(2)添加窗体
选择菜单“工程(Project)”/“添加窗体(add form)”命令,d出对话框,在添加窗体的对话框中选择"窗体"项,单击[打开]按钮,系统就会自动的向原有的工程中添加一个窗体。
1)添加控件
在新的窗体上放置一CommandButton控件,作用是在隐藏新增的窗体的同时显示原有的窗体。
则窗体如下:
2)添加代码
在"继续"按钮的Command1_Click()事件中添加下列代码:
Private Sub Command1_Click()
Form2Hide '隐藏窗体2
Form1Show '显示窗体1
End Sub
程序说明:在窗体Form2被显示的过程中,单击[继续]按钮,就会激活Command1_Click()事件,然后通过Form2Hide 和Form2Show两条语句实现隐藏窗体和显示窗体的功能。
(3)添加说明模块
选择菜单[工程]/[添加模块],就会d出对话框:
在模块的声明段中添加下列代码:
Global a1 as Single
Global a2 as Single
Global a3 as Single
Global a3 as Single '定义四个全局变量,分别用来存储第一季度,第二季度、第三季度和第四季度的销售情况
(4)添加程序代码
1)窗体Form1中的代码如下:
Private Sub Command1_Click()
Form1Hide
Form2Show
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Text1_Change()
a1 = Val(Text1Text) 'VAL()函数用于将字符串转化为数值型
End Sub
Private Sub Text2_Change()
a2 = Val(Text2Text)
End Sub
Private Sub Text3_Change()
a3 = Val(Text3Text)
程序被装入内存后形成什么程序只有被转入内存才能运行,程序只有被转入内存才能运行,转入内存过程要经过编译和链接两个步骤:首先要进行编译,大多数编译系统提供编译驱动程序,它包括语言预处理器、编译器、汇编器和链接器。假如先有mainc和swapc两个源文件,mainc中引用了swapc的函数。驱动程序先调用cpp预处理器(cpp),它将C源程序mainc翻译成一个ASCII码的中间文件maini接下来驱动程序运行C编译器(ccl),它将maini翻译成一个ASCII汇编语言文件mains然后驱动程序运行汇编器(as),它将mains翻译成一个可重定位目标文件 maino再次是链接,把各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载到存储器执行。链接可以在以下三个阶段执行:可以执行于编译时,也就是源代码被翻译成机器代码时。(静态链接方式)可以执行于加载时,也就是在程序被加载器加载到存储器并执行时。(装入时动态链接)可以执行于运行时,由应用程序来执行(运行时动态链接)。由以上两个步骤,程序被装入内存后形成三种形式:(1) 可重定位目标文件 :包含二进制代码和数据,其形式可以在编译时与其他可重定位目标文件合并起来,创建一个可执行目标文件。(2)可执行目标文件 :可以包含二进制代码和数据,其形式可以被直接加载到存储器并执行。(3)共享目标文件 :一种特殊类型的可重定位目标文件,可以在加载或者运行时被动态地加载到存储器并链接。
¥
59
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
程序被装入内存后形成什么
程序被装入内存后形成什么
程序只有被转入内存才能运行,程序只有被转入内存才能运行,转入内存过程要经过编译和链接两个步骤:
首先要进行编译,大多数编译系统提供编译驱动程序,它包括语言预处理器、编译器、汇编器和链接器。假如先有mainc和swapc两个源文件,mainc中引用了swapc的函数。
驱动程序先调用cpp预处理器(cpp),它将C源程序mainc翻译成一个ASCII码的中间文件maini
接下来驱动程序运行C编译器(ccl),它将maini翻译成一个ASCII汇编语言文件mains
第 1 页
然后驱动程序运行汇编器(as),它将mains翻译成一个可重定位目标文件 maino
汇编语言源程序运行方法:
1、找到一段起始地址为SA:0000(即起始地址的偏移地址为0)的容量足够的空闲内存区。
2、在这段内存区的前256个字节中,创建一个称为程序段前缀(PSP)的数据区,DOS利用PSP来和被加载程序进行通信。
3、从这段内存区的256字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0;空闲内存区从SA:0开始,0~255字节为PSP,从256字节处开始存放程序,为更好地区分PSP和程序,DOS将划分到不同的段中,如下这样的地址安排:空闲内存区:SA:0PSP区:SA:0程序区:SA+10H:0注意:PSP区和程序区虽然物理地址连续,却有不同的段地址。
4、将该内存区的段地址(SA)存入DS中,初始化其它相关寄存器后,设置CS:IP指向程序的入口(SA+10H:0)。
以上就是关于计算机启动成功后, *** 作系统的所有程序模块全部装入内存。 这句话对的还是错的为什么全部的内容,包括:计算机启动成功后, *** 作系统的所有程序模块全部装入内存。 这句话对的还是错的为什么、VB考试教程:多窗体程序设计、程序被装入内存后形成线程吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)