- 博客(11)
- 收藏
- 关注
原创 CArchive
<br />CArchive<br /><br />CArchive没有基类。<br />CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。<br />可以把一个归档对象看作一种二进制流。象输入/输出流一样,归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入/输出流处理一系列ASCII字符,但是归档文件以一种有效率、精练的格式处理二进制对象。<
2011-04-20 14:07:00 417
原创 DYNAMIC_DOWNCAST
DYNAMIC_DOWNCASTDYNAMIC_DOWNCAST( class, pointer )参数: class 类的名字。 pointer 将要被强制转换为class类对象指针的指针。 说明:DYNAMIC_DOWNCAST宏提供了将一个指针强制转换为指向一个类的对象的指针的简单方式,同时检查这种强制转换是否合法。这个宏将会把pointer参数强制转换为class参数类型的对象指针。如果pointer参数所指向的对象就是class类的对象,这个宏将返回一个适当
2011-04-19 16:43:00 1470
原创 CObject::IsKindOf
<br />CObject::IsKindOf<br /><br />BOOL IsKindOf( const CRuntimeClass* pClass ) const;<br /><br />返回值:如果对象对应于该类,则返回非零值,否则为0。<br /><br />参数: pClass 指向与CObject派生类相关联的CRuntimeClass结构的指针。 <br /><br />说明:<br />检测pClass来查看:(1)对象是否属于指定的类,(2)对象是否属于指定类派生的类。该函数仅仅当类声
2011-04-19 13:43:00 906
原创 DECLARE_DYNCREATE和 IMPLEMENT_DYNAMIC
<br />DECLARE_DYNCREATE<br /><br />DECLARE_DYNCREATE( class_name )<br /><br />参数: class_name 类的实际名字(不用引号括起来)。 <br /><br />说明:<br />使用DECLARE_DYNCREATE宏可以使每个CObject的派生类的对象具有运行时动态创建的能力。框架利用这种能力来动态创建对象,例如,当它在串行化过程中从磁盘读取对象的时候。文档、视和框架类必须支持动态创建,因为框架需要动态地创建它们。<br
2011-04-19 13:22:00 1754
原创 ASSERT 和VERIFY
<br />ASSERT<br /><br />ASSERT( booleanExpression )<br /><br />参数: booleanExpression 指定了一个表达式(包含指针变量),其计算结果为非零值或0。 <br /><br />说明:<br />这个宏计算它的参数。如果结果为0,则输出一个调试信息并退出程序。如果结果为非零值,它什么也不做。<br />诊断信息具有如下形式:<br />assertion failed in file <name> in line <num><br
2011-04-19 13:18:00 521
原创 关于宏DECLARE_DYNCREATE
<br />DECLARE_DYNCREATE( class_name ) <br /> 参数: <br /> class_name 类的实际名字(不用引号括起来)。 <br /> 说明: <br /> 使用DECLARE_DYNCREATE宏可以使每个CObject的派生类的对象具有运行时动态创建的能力。框架利用这种能力来动态创建对象,例如,当它在串行化过程中从磁盘读取对象的时候。文档、视和框架类必须支持动态创建,因为框架需要动态地创建它们。 <br /> 在类的.H模块中加入DECLARE_D
2011-04-18 11:15:00 627
转载 堆区(heap)和 栈区(stack)
<br />预备知识—程序的内存分配 <br /><br />一个由c/C++编译的程序占用的内存分为以下几个部分 <br /><br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 <br /><br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br /><br />3、全局
2011-04-18 09:16:00 501
原创 mfc一方法
<br />((CEdit*)GetItemDlg(IDC_EDIT_EXAMPLE))->ADDSTRING()类似的用法可以通过GetItemDlg访问到该id对应的对象的一些方法和属性。
2011-04-17 19:46:00 530
原创 string和vector
<br />string是支持长度可变的字符串,c++的标准库负责管理与存储字符相关的内存目标满足对字符串的一般应用。<br />必须包含头文件string。<br />在定义和初始化中注意他的一个初始化函数string s(n,‘c’);的意思的将s初始化为字符“c”的n个副本<br />他与字符串字面值和string类型不是同一个类型。<br />getline(,)接收两个参数,输入流对象,接收string对象。遇到换行符号结束输入。<br /> <br />string对象的操作。e.empty()
2011-04-17 19:45:00 459
原创 cout与cerr的区别描述
<br />关于cout与cerr的区别描述:和cout一样,cerr也是一个ostream对象。它们之间的区别在于,操作系统重定向只影响cout,而不影响cerr。cerr对象用于错误消息。因此,如果将程序输出重定向到文件,并且发生了错误,则屏幕上仍然会出现错误消息。在UNIX系统中,可以分别对cout和cerr进行重定向,命令行操作符>用于对cout进行重定向,操作符2>对cerr进行重定向。
2011-04-16 00:27:00 460
原创 关于__stdcall回调的摘录
代码中,可在函数原型中找到__stdcall,因为它以双下划线打头,所以它是一个特定于编译器的扩展,说到底也就是微软的实现。任何支持开发基于Win32的程序都必须支持这个扩展或其等价物。以__stdcall标识的函数使用了标准调用约定,为什么叫标准约定呢,因为所有的Win32 API(除了个别接受可变参数的除外)都使用它。标准调用约定的函数在它们返回到调用者之前,都会从堆栈中移除掉参数,这也是Pascal的标准约定。但在C/C++中,调用约定是调用者负责清理堆栈,而不是被调用函数;为强制函数使用
2011-04-14 08:49:00 563
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人