文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Visual C++ 5开发使用手册第一个存储程序。

Visual C++ 5开发使用手册第一个存储程序。

时间:2010-10-22  来源:thanklife

文件: File.rar
大小: 35KB
下载: 下载
在http://www.lietus.com/books发现很多在线英文书籍。真好啊。

 

Visual C++ 5开发使用手册 机械工业出版社 special edition using visual C++ 5 kate Gregory

 

在线英文版:http://www.lietus.com/books/Windows/SpecialEdition_using_VisualC++5

第八章 持久性和文件I/0

例子程序制作。

1建立单文档项目File。 到document类添加成员变量:

// Attributes

public:

       CString m_message;

2对文档数据进行初始化:

BOOL CFileDoc::OnNewDocument()

{

       if (!CDocument::OnNewDocument())

              return FALSE;

 

       // TODO: add reinitialization code here

       // (SDI documents will reuse this document)

       m_message = "Default Message";

 

       return TRUE;

}

3、在视图窗口显示,就是在view类的OnDraw()函数中添加:

              pDC->TextOut(20, 20, pDoc->m_message);

4、添加编辑文档内容的对话框ChangeDlg,添加编辑框,并添加关联成员m_message;

5、进入菜单资源框,建立一个菜单ID_CHANGEMESSAGE,然后在view类里面关联命令:

void CFileView::OnChangemessage()

{

       // TODO: Add your command handler code here

       CChangeDlg dlg(this);

       CFileDoc* pDoc = GetDocument();

       dlg.m_message = pDoc->m_message;

      

       int result = dlg.DoModal();

       if (result == IDOK)

       {

              pDoc->m_message = dlg.m_message;

              pDoc->SetModifiedFlag();

              Invalidate();

       }

 

}

6、在document类里面的串行化函数里面添加保存和加载文档。

void CFileDoc::Serialize(CArchive& ar)

{

       if (ar.IsStoring())

       {

              // TODO: add storing code here

              ar << m_message;

       }

       else

       {

              // TODO: add loading code here

              ar >> m_message;

       }

}

 

<< 和>>进行存储和取出的操作符,他们是为后面这些简单数据类型定义的:

BYTE, WORD, int, LONG, DWORD, float, double.

 

 

创建持久类来进行存储,具有较好的面向对象特征:

文件: File2.rar
大小: 38KB
下载: 下载

创建一个能串行化其成员变量的类的基本步骤如下:

1,  由CObject派生此类。

2,  在类定义部分放置:DECLARE_SERIAL(CMessage)

3,  在类实现部分放置:IMPLEMENT_SERIAL(CMessage, CObject, 0)

4,  重载类中的Serialize()

class CMessage :public CObject

{

       DECLARE_SERIAL(CMessage)

              CMessage(){};

protected:

       CString m_message1;

       CString m_message2;

       CString m_message3;

      

public:

       void SetMessage(UINT msgNum, CString msg);

       CString GetMessage(UINT msgNum);

       void Serialize(CArchive& ar);

      

 

};

 

IMPLEMENT_SERIAL(CMessage, CObject, 0)

 

void CMessage::SetMessage( UINT msgNum, CString msg )

{

       switch(msgNum)

       {

       case 1:

              m_message1 = msg;

              break;

       case 2:

              m_message2 = msg;

              break;

       case 3:

              m_message3 = msg;

              break;

       }

}

 

CString CMessage::GetMessage( UINT msgNum )

{

       switch(msgNum)

       {

       case 1:

              return m_message1;

 

       case 2:

              return m_message2;

 

       case 3:

              return m_message3;

       default:

              return "";

 

       }

}

 

void CMessage::Serialize( CArchive& ar )

{

       CObject::Serialize(ar);

 

       if(ar.IsStoring())

       {

              ar << m_message1 <<m_message2 << m_message3;

       }else

       {

              ar >> m_message1 >>m_message2 >> m_message3;

       }

      

}

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载