鹿鼠占据着不同的栖息地:在田野里成长的喜欢田野,在树林里成长的喜欢树林,尽管在其他条件相同的情况下,田野是一个更有利的栖息地。如果在田里出生的年轻鹿鼠被转移到树林里去,它们仍然对田地有强烈的偏好。实际上,鹿鼠的不同种群或种族已经适应了不同的栖息地。不同的人类群体不太可能适应他们所居住的不同的栖息地,这极为罕见,即使发生了也只是以相当小程度的方式。......
2023-10-14
传统的数据存储结构,一般是将所有要存储的各种数据定义到一个结构体中,再以结构体对象为单元通过CFile对象循环读/写数据。CArchive类没有基类,它对CFile类简单地再封装,其中大量重载了“operator<<”和“operator>>”函数,使各种类型数据的文件存储更加方便。CArchive类的输入/输出功能,仿制了标准C++的fstream类的输入/输出符号,然而被CDocument类引用后巧妙地搭建起序列化高级存储架构。
创建一个工程名为“f”的对话框程序,用于演示从CFile到CDocument存储架构的进化过程。
1)在主对话框中添加一些控件,如图13-2所示。
图13-2 编辑主对话框资源
2)修改控件属性,见表13-1。
表13-1 主对话框的控件属性
3)通过类向导为列表控件建立控件型关联变量,如图13-3所示。
图13-3 添加控件型关联变量
4)修改对话框初始化函数代码。
5)建立“添加”按钮的消息映射函数并修改代码。
6)建立“保存”和“加载”按钮的消息映射函数并修改代码。
7)编译并运行,测试代码。
在对话框列表内随意添加一些数据,然后单击“保存”按钮,重启进程后再单击“加载”按钮。这是最原始的文件保存方式,在前面章节已有介绍。
重新创建一个工程名为“a”的对话框程序,用于演示使用CArchive类存储文件的方式。
8)在主对话框内添加一些控件,种类和ID与“f”工程完全一致,如图13-4所示。
图13-4 编辑主对话框资源
9)通过类向导为列表控件添加关联变量m_list,再修改对话框初始化函数代码。
10)分别建立“添加”“保存”和“加载”按钮的消息映射函数并修改代码。
11)编译并运行,测试代码。
在对话框列表内随意添加一些数据,然后单击“保存”按钮,重启进程后再单击“加载”按钮。(www.chuimin.cn)
使用归档类(CArchive)进行文件存储的特点如下。
①不需要使用固定大小的结构体对象作为存储单元循环进行操作。
②数据存储紧凑无冗余,生成的文件的大小是所有输出变量大小和字符串长度的和。
③归档文件使用输入/输出符号传递存储对象,使编写程序更加灵活方便,开发效率更高。
重新创建一个工程名为“d”的对话框程序,用于演示使用CDocument类的串行化存储架构。
12)在主对话框内添加一些控件,与“f”工程完全一致,为列表控件添加关联变量m_list。
13)在类视图中添加一个CDocument派生类,如图13-5所示。
图13-5 创建稳当类的派生类
14)修改刚添加的CDoc类头文件,将构造函数的权限由保护改为公有。
15)在主对话框类头文件中,添加CDoc类型成员变量。
16)分别建立“添加”“保存”和“加载”按钮的消息映射函数并修改代码。
17)在类视图中为主对话框类添加序列化函数,如图13-6所示。
图13-6 添加普通成员函数
18)修改序列化函数代码。
19)修改CDoc类的序列化函数代码。
20)编译并运行,测试代码。
在对话框列表内随意添加一些数据,然后单击“保存”按钮,重启进程后再单击“加载”按钮。
CDocument类实现序列化存储的核心是Serialize函数,它既负责用户数据保存也负责数据加载。Serialize函数通过参数(CArchive::IsStoring)判断任务性质,如果是正在执行保存任务,则调用输出符号将用户输入的数据保存到文件中,否则调用输入符号将文件中存储的数据读取到应用程序中。
在MSDN索引中输入“Serialize”查看,Serialize是MFC顶层基类CObject中的虚函数,因此,几乎所有MFC派生类都支持该虚函数,如图13-7所示。
图13-7 查看MSDN函数说明
有关VC++就业培训宝典之MFC视频教程的文章
鹿鼠占据着不同的栖息地:在田野里成长的喜欢田野,在树林里成长的喜欢树林,尽管在其他条件相同的情况下,田野是一个更有利的栖息地。如果在田里出生的年轻鹿鼠被转移到树林里去,它们仍然对田地有强烈的偏好。实际上,鹿鼠的不同种群或种族已经适应了不同的栖息地。不同的人类群体不太可能适应他们所居住的不同的栖息地,这极为罕见,即使发生了也只是以相当小程度的方式。......
2023-10-14
在1897年,德国拜耳第一次合成了构成阿司匹林的主要物质。阿司匹林于1898年上市,被发现它还具有抗血小板凝聚的作用,于是重新引起了人们极大的兴趣。至1899年,拜耳以阿司匹林为商标,将此药品销售至全球。停止搅拌,稍冷,将反应液倾入150 mL冷水中,继续搅拌,至阿司匹林全部析出。精制阿司匹林时选择溶剂依据什么原理?......
2023-06-15
随后围绕生物进化论知识领域展开了长久的争辩,生物进化论由此获得了广泛关注与认同,可以说,达尔文生物进化论在知识领域中被普遍接受,使得进步观念逐渐以进化作为自身的合理性基础,由此确立了在解释人类社会发展中的支配地位。从进化到进步,以进化来阐释进步学说,并不是一个自然而然的过程。可以说,进步观念是在科学权威化的语境中逐步臻于完善的,特别是达尔文关于自然选择的生物进化论则直接致使进步观念实现了理论提升。......
2023-11-30
人与动物美学之间存在着明显的交叉。美往往是适宜性的标志,我将在第七章进一步强调。在其他情况下,人类对动物的偏好通过拟人化来改变它们的本性。在对动物的拟人化态度所产生的审美回应中,有两种特别值得提及,因为我们强烈地要采用它们。动物还受到人类审美偏好和偏见的影响。而这种与动物的同理心无疑可以为人们对动物的审美回应奠定基础。审美回应很少被强求,即使它们是合理的。这种赞美是认知的和自觉的。......
2023-10-14
在《人类的由来及性选择》中,达尔文介绍了第二个进化过程,即性选择。此外,性选择和自然选择似乎援引了不同的适宜性概念。这样做涉及两个步骤:一是对潜在的繁殖成功的适宜性做出一种新的说法;二是假设性选择过程符合这种适宜性。这在一定程度上是因为对达尔文的这一说法持怀疑态度,即雌性动物、鸟类和昆虫做出的配偶选择是出于审美动机。达尔文关于性选择的说法没有受到当时的生物学家赞同还有其他原因。......
2023-10-14
古希腊的进化观念,主要为前苏格拉底时期的自然哲学家们所拥有。古希腊早期因哲学家对自然的兴趣而兴盛的自然哲学及其所阐述的一些演化思想,在古希腊中后期消沉了下来,这是时代的变化和哲学家兴趣转移的结果。扼杀进化思想的力量,还有开始于希腊后期并兴盛于中世纪的基督教。......
2024-06-16
4P营销组合策略是最常被提到的体育营销组合要素,而近来亦有部分学者认为可再加上公共关系、人员及过程等要素,故提出5P、6P甚至7P的策略。4C是站在消费者的角度上来看营销,决定企业的未来;4P是站在企业的角度来看营销,把握着企业的现在。......
2023-11-18
他把“式能”的无限展开称为“道演”,就很好地说明了这一点。下面,我们就以他的“道演”这个概念为中心,来看看他的形而上学体系中的进化思想。我们特别关注的是他为“式”和“能”设定的“动静”区别,因为这同他的“道演”进化观紧密相联。“道演”的起点是从无限的过去开始的。“而”所表示的就是这一过程。“道演”的最终极限是“太极”。......
2024-06-16
相关推荐