动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息

本月文章推荐
.C++ 内联函数.
.编程指南:C语言编程易犯毛病集合.
.DrawDib函数组的使用.
.c语言中时间陷阱的实现.
.在CPP中调用Jscript中的函数.
.关于拷贝构造函数和赋值运算符.
.C++箴言:理解inline化的介入和排.
.corba核心规范.
.C程序设计语言概论(1).
.魔方算法.
.C++辨析系列谈之四.
.使用C++异常来取代exit()函数.
.How to write a Makefile.
.将Wav格式压缩成Mp3.
.VC命名管道通信的实现(组图).
.C++程序中导出Word文档的简易方法.
.开发Web应用程序中Cookie使用的问.
.经典与现代的结合:在MFC中集成RA.
.在Win9x/NT下获取硬盘物理序列号.
.集邮问题.

C++ Builder 控制窗体何时驻留内存

发表日期:2008-3-8 |



  4.3 窗体的更多细节

    使用IDE创建一个窗体的同时,C++Builder会自动地通过在WinMain()函数中加入代码来在内存中创建窗体。这也是一般所需的方式,可以不必去改变。也就是说,在整个程序范围内主窗口是一直存在的,所以为主窗口创建窗体时,可以不必改变C++Builder的缺省方式。
    不过,你可能不希望在程序运行时,所有应用程序的窗体都驻留在内存中,若不希望应用程序的 对 话框同时留在内存中,可以在需要的时候动态地创建它们 。
    窗体可分为模态(Modal)和非模态(Modeless)两类,模态窗体指的是用户在切换到其他窗体之前需与之交互的窗体(例如,对话框就要求用户的输入)。非模态窗体是指一直显示的窗口,直到用户关闭或将其最小化,或者是被其他窗口盖住。

4.3.1 控制窗体何时驻留内存
    缺省时C++Builder会通过在应用程序的WinMain()函数中加入下列代码,自动地在内存中创建应用程序主窗体。
C++ Builder 控制窗体何时驻留内存(图一)
    这个函数创建了一个与窗体同名的全局变量,应用程序中的每个窗体都对应一个全局变量,这个变量是指向窗体类的实例的指针,并在程序运行的同用于引用窗体,所有包含窗体头文件(.h)的源代码 (.cpp)文件都可以通过这个变量来访问窗体。
    因为窗体被加入到WinMain()函数中,所以当程序一激活,窗体就会出现,同时在整个应用程序运行时都驻留在内存中。

1.显示自动生成的窗体
    假如选择在程序启动时创建窗体,但想在稍后再显示它,这时可在窗体事件处理程序中用Show Modal方法来显示一个已存在于内存中的窗体。
C++ Builder 控制窗体何时驻留内存(图二)

    在这种情况下,由于窗体已存在于内存中,故不用再创建另一个实例或析构那个实例。

2.动态创建窗体
    有时不希望应用程序中的所有窗体都驻留在内存中,为减少程序载入时所需的内存数,可以在需要使用某些窗体时才创建它们。例如,对话框就只在用户需和它交互时才需出现在内存中。
    为在运行时不同阶段使用IDE创建窗体:

1) 从组件栏中选择FileNewForm菜单项以显示新窗体。
2) 从ProjectOptionsForms页中的自动创建的窗体列表中,将该窗体删除。这也就是从WinMain()函数中删除窗体的调用,也可自行从WinMain()函数中删除下面这一行:
C++ Builder 控制窗体何时驻留内存(图三)
3) 需要调用窗体时,对于非模态窗体可使用Show方法,对于模态窗体可使用ShowModal方法。
C++ Builder 控制窗体何时驻留内存(图四)

    主窗体的事件处理程序必须创建结果窗体的实例,并负责删除它,调用结果窗体的方式之一是使用全局变量,如下所示。注重ResultsForm是一个模态窗体,处理程序将使用ShowModal方法。
    例中事件处理程序会在窗体关闭之后删除它,因此若需要在应用程序的其他地方使用ResultsForm,就需要使用new重新创建它,若窗体是使用Show方法显示的,则不能在文件处理程序中删除它,因为Show需在窗体是打开时返回。
    注重使用new操作符创建窗体时,要确保该窗体不在ProjectOptionsForms页的自动创建窗体的列表中,确切地说,假如创建一个窗体而没有从自动创建窗体列表中删除同名的窗体,则C++Builder会在启动时创建窗体,同时事件处理程序会创建一个新的实例,并会重载对自创建实例的引用,自动创建的实例虽存在,但应用程序无法再访问到它。而当事件处理程序结束时,全局变量不再指向一个有效窗体,所有对该全局变量的调用都可能会造成应用程序崩溃。

3.创建窗口之类的非模态窗体
    只要窗体仍在使用,就必须保证非模态窗体的引用变量的存在,也就是说这此变量必须有全局范围,大多数情况下,必须使用窗体创建时生成的全局变量(变量名和窗体的Name属性相同),假如应用程序需要窗体的额外的实例,必须为每个实例声明单独的全局变量。

4.使用局部变量创建窗体实例
    创建模态窗体个别实例的较安全方法是在事件处理程序中使用局部变量作为新实例的引用。假如使用局部变量,就可以不必关心ResultsForm是否为自动创建的了,事件处理程序的代码不会引用全局窗体变量。例如:
C++ Builder 控制窗体何时驻留内存(图五)

    可以注重在这个事件处理程序中没有使用窗体的全局实例。应用程序一般使用窗体的全局实例。不过,若需要模态窗体的新实例。或是在应用程序的个别的块(例如某一个函数)中使用窗体。使用局部实例则是最安全有效的方式。
    当然,非模态窗体的事件处理程序中不能使用局部变量。因为非模态窗体必须具有全局范围以保证在窗体使用过程中一直是存在的窗体一打开。Show就会返回。因此,若使用局部变量,将会立即失去其作用域。

上一篇:使用 C++ Builder 创建包含VCL组件的DLL 人气:524
下一篇:理解TApplication、TScreen和TForm 人气:868
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 HDWiki v4.0.1 bulid 081007 UTF
2008-10-7 迅易评选投票管理系统 v10.0
2008-10-7 HDWiki v4.0.1 bulid 081007 GBK
2008-10-7 Bitrac单用户博客 v1.14 bulid 0
2008-10-7 OpenX(广告管理系统) v2.6.2 多国
2008-10-7 乐铺网店系统免费普及版 v3.41
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号