不用VC中的Document能否存储数据

Python Trimesh库实战:5分钟搞定STL文件解析与3D模型可视化 本文介绍了如何使用Python的Trimesh库快速解析STL文件并进行3D模型可视化。通过简洁的代码示例,演示了从环境搭建、模型加载、几何数据提取到基础变换和批量处理的核心流程,帮助开发者和工程师在5分钟内高效完成3D数据处理与可视化任务。 阅读详情

  不用VC中的Document能否存储数据

(本文只适合初学者阅读,如果你是高手,而且你非要看,那就当成是茶余饭后的消遣吧.:-))

我刚开始学VC的时候一直被那让人头痛的Document/View结构给搞的头晕.

真的,我还记得第一次使用串行输出,ar<<m_xxx;这样的东西,当时我怎么

也搞不明白,是个怎么会事情.后来,我知道是CArchive重载了<<和>>两个操作符.

作用是吧,对象中的数据永久保存到磁盘上(说句笑话,这里永久是相对的如果你

把磁盘格式化一样什么也没了).可是这些一般都是在CDocument类的派生类中重写

Serialize函数来完成的.这是很自然,因为CDocument可以理解是一个文件的抽象形式

而View则正是需要Document提供的数据,来完成对用户的显示.可是想想.如果,我是

如果,有一天用户都是瞎子,或者他们不想看所有的数据,那要是还是吧,那些要显示和不要显示

的数据都放在CDocument类中吗?那样结构显然是有点乱.是的,CDocument完全是因为要

和CView进行交互才必须要用到的.那么好吧,虽然不要用户看见那些数据,可是又必须要

保存的数据,我们该怎么办?是啊,谁都想的到,一定要用到Serialize否则什么也无法进行

根据MSDN的说法.要拥有Serialize必须要从CObject类派生类才可以那样做.还要什么想想看

当然是一个SaveData和一个LoadData了,要知道我们只是不想让用户来干预,而不是不处理这些

数据,也就是说这些数据仅仅只是不和View打交道.那么好吧,我还是来点例子,那样会更有说服力

我先在CSerData.h

class CSerData : public CObject
{
DECLARE_SERIAL(CSerData)//千万别忘了这个宏否则什么也做不了(建议参考<<深入浅出MFC>>)

public:

    virtual void Serialize(CArchive& ar);
    int m_nID;
    CString m_strName;
    Bool m_IsSave=False;
    SaveData();
    LoadData();
};

瞧见了,我要改写Serialize那个虚函数.要不怎么能完成我们自己的事情呢?还有我添加了

两个要存储的数据,一个int和一个CString,你可以把它想象成,一个唯一标示的ID和一个

可以相同的名字.你甚至可以把它想象成,一份黑名单,一个凡是让你讨厌的用户的名单列表

可你不会傻到要那些用户看见,否则他就会去修改这些数据了.呵呵..当然这是打个比方.

下面我们来实现CPP文件.

#include "stdafx.h"
#include "CSerData.h"

IMPLEMENT_SERIAL(CInfo,CObject,1)

void CInfo::Serialize(CArchive& ar)
{
    if (ar.IsLoading()) // If you are loading data from the disk
    {
        ar >> m_strName;
        ar >> m_nID;
    }
    else // If you are storing data to the disk
    {
        ar << m_strName;
        ar << m_nID;
    }
}


就想你常做的那样,仅仅只是ar<<m_xxxx;和在CDocument中的一样,当然,这是必须的.

接下来,看看我们还要做点什么?别忘了,如果不把它们写到文件里,你也别想知道

那些用户进了黑名单.记得这文件只有你才打的开.好吧,还记得,我在CSerData.H

中的 SaveData();和LoadData();,这两个函数吗?是的,它们就是来完成这一工作的

(也许把它们写到类的外面成为一个全局函数更为符合C++风格.可我觉得真正的OO应该写类内)

如果你不愿意那样做,你可以写到外面,我想只要你愿意,编译器也不发火,没人管的着你.

#define DATA_FILE _T("DataTest.dat")


void SaveData()                 
//  Code to serialize and save the data
{
    UINT nFlags = CFile::typeBinary | CFile::modeWrite;

    if (_access(DATA_FILE, 0))
    {
        nFlags |= CFile::modeCreate;           
        // The file doesn't exist, so create it
       
        m_bCanSave = TRUE;
    }
    else
    {
        int nTemp = _access(DATA_FILE, 6); 
        // Check Read Write Permissions

        if(nTemp==0)
            m_bCanSave = TRUE;
    }

    if (m_bCanSave)
    {
        CFile file;
        CFileException fe;

        // The file exists with read & write permissions
        if (file.Open(DATA_FILE, nFlags, &fe))
        {
            CArchive ar(&file, CArchive::store);
            UpdateData(TRUE);
            CSerData.m_nID = m_nID;
            CSerData.m_strName = m_strName;
            CSerData.Serialize(ar); // Serialize the data
        }
    }  
}

上面的save操作已经结束,我想该是load的时候了

void LoadData()
//Code to load data

{
    if (_access(DATA_FILE, 6)==0) // If File Exists
    {
        CFile file;
        CFileException fe;

        if (file.Open(DATA_FILE,CFile::typeBinary |
            CFile::modeRead, &fe))
        {
            CArchive ar(&file, CArchive::load);
            Info.Serialize(ar);
        }

    }

    m_nID = CSerData.m_nID;
    m_strName = CSerData.m_strName;
    UpdateData(FALSE);
}

 


终于写完了,希望不是那么糟糕.希望有点人气度.我在上面说了,本文只适合初学者

如果你是高手,读到这儿.就已经说明,你今天很闲,或者你是来找点茶余饭后的消遣

那好吧,我的文章希望就能带给你们这么多,下次见.

FFMPEG音频开发: Linux下采集摄像头(使用V4L2框架)数据录制成MP4视频保存到本地 一、环境介绍 操作系统介绍:ubuntu 18.04 FFMPEG版本: 4.4.2 摄像头: USB摄像头、虚拟机挂载本机自带摄像头 二、FFMPEG与X264下载编译 X264下载地址: http://www.videolan.org/developers/x264.html FFMPEG下载地址:https://ffmpeg.org/download.html Yasm ... 阅读详情

相关推荐

Oracle数据库安装图文教程 附百度云oracle Database 11g 安装包

一,Oracle数据库安装包下载 1.从Oracle官网下载所需的数据库安装包【下载需要注册登录Oracle账户】     http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 2.此处有下载好的Oracle Database 11g Release 2  百度云网盘  提取码:z...

向来如此,就一定是对的吗 6万+

VC中单文件和多文档文件的创建流程和打开流程

无论是单文档还是多文档,当开始运行程序时,它们的流程都是一样的,只是它们的模板不一样.如下: 程序启动-->CWinApp::OnFileNew-->文档管理器的(CDocManager *)m_pDocManager-->OnFileNew()-->文档模板(单文档或多文档模板)的OpenDocumentFile函数打开文档,当文档不存在时则创建-->CreateNewDocument()

天上的猩猩的专栏 1646

(头歌作业)—6.1 葡萄酒评论分析报告(project)

请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。

2301_80677920的博客 1245

vc++

CDocument   CDocument类为用户定义的文档类提供了基本的函数功能。文档类表示了通常用于File Open命令打开和使用File Save命令保存的数据。   CDocument支持标准操作,如创建、装载、保存等。框架用CDocument定义的界面来操作文档。   应用可支持多种文档,例如文本文档和工作表。每种类型都有一个相关的文档模板。文档模板指定该类文档所使用的资源(如

sdnujun的专栏 534

UE5.2 DynamicMesh避坑指南:从蓝图生成到物理碰撞的完整流程

本文详细解析了在UE5.2中使用DynamicMesh组件时,如何正确选择ADynamicMeshActor与AGeneratedDynamicMeshActor,并提供了从蓝图生成、初始化到配置物理碰撞的完整避坑流程。重点解决了SpawnActor失效、碰撞更新等常见问题,帮助开发者高效实现程序化网格生成与动态变形效果。

rrr55的博客 314

工业模型导入Unity实战:从ProE/SolidWorks到实时渲染的完整流程

在工业仿真、数字孪生和VR/AR应用开发中,将高精度工程模型导入实时渲染引擎是一个常见的技术挑战。其核心原理在于参数化工程软件与实时渲染引擎的数据结构差异:前者基于精确的B-rep边界表示和特征树,后者依赖轻量化的三角网格与材质贴图。这一转换的技术价值在于实现工程数据的可视化与交互化,为产品展示、虚拟培训和工厂仿真等应用场景提供基础。通过数据翻译与优化流程,特别是利用3ds Max或Blender作为中转站进行网格优化与UV展开,能够有效解决模型破面、材质丢失和性能问题。本文聚焦于ProE(Creo)和So

weixin_33050117的博客 344

VC 文档+视图 详细分析

目录(?)[-] 深入浅出MFC文档视图架构之基本概念深入浅出MFC文档视图架构之文档模板深入浅出MFC文档视图架构之文档深入浅出MFC文档视图架构之视图深入浅出MFC文档视图架构之框架深入浅出MFC文档视图架构之相互关系深入浅出MFC文档视图架构之实例剖析 深入浅出MFC文档/视图架构之基本概念   引言   MFC引入了"文档

cbNotes的专栏:不积硅步,无以至千里;不积小流,无以成江海! 1万+

基于CH32X035的USB双K型热电偶温度计:硬件设计、冷端补偿与信号放大详解

本文详细介绍了基于CH32X035单片机设计USB双K型热电偶温度计的完整方案。重点解析了硬件设计中的核心挑战:如何利用精密运放GS8552-SR进行信号放大,以及采用NTC热敏电阻和查表法实现精确的冷端补偿。项目通过USB供电通信,实现了双路高精度温度测量与显示,为电子爱好者和工程师提供了实用的参考设计。

weixin_42153793的博客 160

VC入门必备--基础知识(四)

VC入门必备--基础知识(四)Document, View和Application Framework在MFC中,Document, View和Application Framework是3个非常重要的概念。顾名思义,Application Framework就是应用程序框架,你可以用这个框架来建立自己的Windows程序,可以节省不少时间。你也可以不用框架而用手工一行一行的写出源代码,这

梦想---软件设计师 1478

【SystemVerilog基础】SystemVerilog Assertion 概述

断言主要是描述复杂的设计行为;是传统验证方法学一个很好的补充,可以检查到电路内部细节,相当于一种白盒验证,传统的验证方法学是纯粹的黑盒验证!property跟上面的sequence差别不大,唯一有差别可能多了两个implication(|->,|=>)注意,当有前置条件时,不满足前置条件不会fail,而是伪真!上面这个因为没有前置条件,每个周期都会去检查!注意:当没有前置条件时,不满足条件会直接fail!

MoorePlus的博客 333

关键!C#工业上位机界面设计终极指南:WinForm/WPF怎么选?【工业实战完整版,无废话选型+避坑+落地技巧】

工业上位机UI选型指南:WinForm与WPF核心对比 摘要: 本文基于工业实战视角,对比WinForm与WPF在工业上位机开发中的适用性。WinForm凭借GDI+原生渲染、极致兼容性(完美支持Win7/XP)、低资源占用和硬件底层调用优势,成为老旧工控机、简单监控系统和7×24小时运行设备的首选。WPF则依托DirectX硬件加速、MVVM架构和强大可视化能力,更适合复杂可视化大屏、3D模拟等高端场景及需要长期迭代的大型项目。核心选型原则是:优先考虑稳定性与兼容性,WinForm解决"能不能用

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 729

用C语言手撸一个预测分析器:从FIRST/FOLLOW集到完整语法分析(附完整代码)

本文详细介绍了如何使用C语言从零开始构建一个预测分析器,涵盖FIRST/FOLLOW集计算、LL(1)分析表构建等编译原理核心内容。通过完整的代码示例和实战技巧,帮助开发者深入理解语法分析技术,并实现高效的预测分析法。文章特别强调了内存管理和调试策略,适合编译原理学习者和C语言开发者实践参考。

weixin_33738982的博客 572

36、真核生物RNA PolII启动子预测相关研究

本文综述了真核生物RNA聚合酶II启动子预测的研究进展,涵盖转录调控机制、核心启动子元件(如TATA框、INR、GC框)、转录因子结合位点预测的挑战与方法。介绍了基于权重矩阵、神经网络和隐马尔可夫模型等多种启动子预测算法,并探讨了启动子分类策略及评分加权方法。通过Hertz-Stormo-Hartzell流程和基因微阵列分析实例,展示了如何识别保守调控序列。文章还总结了当前预测技术的局限性,提出了整合多组学数据、开发深度学习模型、加强实验验证等未来研究方向,旨在提升启动子识别的准确性与生物学意义。

palm99的专栏 187

CheckBoxList 赋值问题

这里是客户添加学校专业的专业类表.根据用户选择添加用户选择专业分类 添加成功.可是在datalist编辑跳到这个添加页面后,它怎么也不显示用户选择的专业分类. 代码 CheckBoxList chbList = (CheckBoxList)this.ProfessCheckControl1.FindControl("chbPorList"); if (dt.Ro...

weixin_30376509的博客 155

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

struts2 checkboxlist 的一个问题

用struts2的checkboxlist遇到一个问题。    下面是java对象。package cn.jolestar.struts; /** * @author jolestar * */ public class Language { private Long id; private String name; /** * */ public Languag...

Jolestar的专栏 384

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CheckBoxlist 问题

有一个问题,我用checkboxlist的datasource 绑定了数据库,数据都读出来了,在它的最后一项中有一个"其它",其它后面我放了一个asp:textbox控件,我想当我选择"其它"项时,asp:textbox显示,当不选择时.asp:textbox控件隐藏,怎么实现呀? 

ygyangguang的专栏 605

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

记录, struts2 checkboxlist 的一个问题

记录下struts2 checkboxlist 选中的问题 http://jolestar.iteye.com/blog/160360

不积跬步无以至千里 808

CheckBoxList垂直方向对齐问题

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http://www.w3.org/1999/xhtml">     CheckBoxList垂直方向对齐问题

UnOpenMyCode的专栏 2381

checkboxlist的布局问题

css样式: #cbxListParent input {vertical-align:middle;float:left;} #cbxListQuestionType input{vertical-align:middle;} .cb td{width:100px;}  .cb label{display:inline-block;width:80px;}   runat

u013908405的专栏 3418

struts2 CheckBoxList使用时要注意的问题

&lt;s:checkbox name="check" label="Check" fieldValue="true"&gt;&lt;/s:checkbox&gt; &lt;s:checkboxlist list="#{'1':'abc','2':'efg','3':'sfdsf'}" value="#{'2','3'}" name="checkList3&

weirhp的专栏 125

问题 struts2 checkboxlist 回显问题

struts2 checkboxlist 定义了Set 可以通过form传入值,但是怎么也回显不了,奇了怪了 展示页面前面定义了set值页面也显示不了 要研究~

kfc_davy 150

关于CheckBoxList和RadioButtonList的几个问题

  其实我一向很少用关于"list"的控件,因为有DataGrid就基本上都搞定了,然而一方面是为了学习,另一方面也可以灵活的应用更多的控件,于是采用了其中的几个控件,但没想到结果令我大失所望。。。。  先看看DataList控件,它的使用最郁闷的是不能在IDE环境里绑定数据,而只能用模板(不知道是不是我没学会)。 <asp:DataListid=...

weixin_30448603的博客 125

关于checkboxlist前台取值问题

以下是别人博客的后台动态绑定值的取值方法:前台:http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/1999/xhtml" >    无标题页        function checkAll()    {        var ckelems = document.getElemen

a451873976的专栏 614

解決無法用Javascript取得CheckBoxList Value的問題

解決無法用Javascript取得CheckBoxList Value的問題 先放置一個測試用CheckBoxList    asp:CheckBoxList ID="CheckBoxList1" runat="server">     asp:ListItem Text="小明" Value="A">asp:ListItem>     asp:ListItem Text="小

manbufenglin的专栏 848

ASP.net - Checkboxlist 控件高度和滚动条问题

                    Height="10px">            ddd            ddd            d            fff            ff            ff            ff            ff            ff            ff            ff          

Mobidogs Blog 4324

struts2 checkboxlist赋值的问题

checkboxlist可以选择多个值,在action中用string型接值时接到的是像这样的值 A,B,C 面从DB中往页面写给checkboxlist赋值则要求这么写 Action中: private String[] selQuestionAnswer = null; /** * @return the selQuestionAnswer */ ...

a619897441的博客 179
上一篇: 使用C#制作的更换桌面背景程序
下一篇: 由实例计数器引出(C#)
yarshray
博客等级 码龄25年 72粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值