如现有结构体
struct Paint_Data
{
short nType;
POINT point1;
POINT point2;
};
Paint_Data m_Data[100];
for(int i=0;i<100;i++)
ar<<m_Data[i]; //不支持这样,怎么办呢?
struct Paint_Data
{
short nType;
POINT point1;
POINT point2;
};
Paint_Data m_Data[100];
for(int i=0;i<100;i++)
ar<<m_Data[i]; //不支持这样,怎么办呢?
解决方案 »
- 关于CreateDIBSection函数
- 为什么很多Windows API使用的结构体都会有一个记录结构体长度的成员
- 我这是错误在哪里呢?
- 360的管理网速原理是什么。跪求c++代码
- 关于bmp文件的显示问题
- 一个调试中的问题,关于MSCOMM控件接收8个字节的问题!求救
- 急,如何在应用程序中指定打印纸张大小?????
- Combox 下拉编辑框,没有限制输入字符数功能,如何实现SetLimitText??
- 天下没有可用的vc++的软件吗?一个关于vc安装的问题,急急急||||
- CDialogBar里怎么使用滚动条啊??
- CEdit::LineScroll(1) 每次向下移动多少个像素呢?
- 有人能详细的给我描述一下消息映射是什么?是如何工作的吗?
ar.Write(&m_Data[i], sizeof(Paint_Data)) ;或者直接
ar.Write(m_Data, sizeof(Paint_Data)*100) ;
写成序列化的类。就可以处理了
.h文件
class CPaint_Data : public CObject
{
DECLARE_SERIAL( CPaint_Data )
public:
short sType; //图元类型; 0:直线;1:矩形;2:圆(椭圆)形
POINT Point1; //第一个点坐标
POINT Point2; //第二个点坐标
public:
// empty constructor is necessary
CPaint_Data(){};
CPaint_Data(short Type,POINT P1,POINT P2)
{
sType=Type;
Point1=P1;
Point2=P2;
} void Serialize( CArchive& archive );
// rest of class declaration
};
.cpp文件
#include "CPaint_Data.h"IMPLEMENT_SERIAL( CPaint_Data, CObject, 1 )void CPaint_Data::Serialize( CArchive& archive )
{
// call base class function first
// base class is CObject in this case
CObject::Serialize( archive ); // now do the stuff for our specific class
if( archive.IsStoring())
archive<<sType<<Point1<<Point2;
else
archive>>sType>>Point1>>Point2;
}
看看有什么问题吗?
Generating Code...
Error executing cl.exe.
Creating browse info file...
BSCMAKE: error BK1506 : cannot open file '.\Debug\CPaint_Data.sbr': No such file or directory
#include "stdafx.h"
ar<<m_Data[i]或者ar>>m_Data[i];
还是编译不过去,这样封的类还不行吗?
错误提示如下:Deleting intermediate files and output files for project 'DrawTest - Win32 Debug'.
--------------------Configuration: DrawTest - Win32 Debug--------------------
Compiling resources...
Compiling...
StdAfx.cpp
Compiling...
CPaint_Data.cpp
DrawTest.cpp
DrawTestDoc.cpp
C:\Documents and Settings\ytx\桌面\DrawTest\DrawTestDoc.cpp(72) : error C2678: binary '<<' : no operator defined which takes a left-hand operand of type 'class CArchive' (or there is no acceptable conversion)
C:\Documents and Settings\ytx\桌面\DrawTest\DrawTestDoc.cpp(81) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'class CPaint_Data' (or there is no acceptable conversion)
DrawTestView.cpp
MainFrm.cpp
Generating Code...
Error executing cl.exe.
Creating browse info file...DrawTest.exe - 2 error(s), 0 warning(s)
m_Data[i].Serialize(ar);
void CPaint_Data::Serialize( CArchive& archive )
{
// call base class function first
// base class is CObject in this case
CObject::Serialize( archive ); // now do the stuff for our specific class
if( archive.IsStoring())
archive<<sType<<Point1<<Point2;
else
archive>>sType>>Point1>>Point2;
}