首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CArchive::GetObjectSchema返回错误的值

使用CArchive::GetObjectSchema返回错误的值
EN

Stack Overflow用户
提问于 2017-06-10 11:18:23
回答 1查看 217关注 0票数 0

我这里有个问题。在我的主应用程序头文件中,我有以下定义:

代码语言:javascript
复制
#define SOUNDROTA_VERSION_171801    171801 // 17.1.8 Beta 1
#define SOUNDROTA_VERSION_CURRENT   171801 // 17.1.8 Beta 1

在我的应用程序中,我有一个CObject派生类,它的顶部是这样的:

代码语言:javascript
复制
IMPLEMENT_SERIAL(CChristianLifeMinistryEntry, CObject, VERSIONABLE_SCHEMA | SOUNDROTA_VERSION_CURRENT)

到目前为止,在使用模式值时,一切都很顺利。我承认,以前我使用的值比较小,比如1707 for 17.0.7,但我也尝试将测试版本的值也考虑在内,因此也会考虑更大的数字。

代码语言:javascript
复制
void CChristianLifeMinistryEntry::Serialize(CArchive& ar)
{
    CObject::Serialize(ar);

    if (ar.IsStoring())
    {   // saving code
    else
    {   // loading code
    UINT uSchema = ar.GetObjectSchema();
        if (uSchema >= SOUNDROTA_VERSION_171801)
        {
            AfxMessageBox(_T("Booh"));
        }
        else
        {
        }
    }
}

我的问题是,当我保存一个数据文件,然后重新打开它时,uSchema的值为40729

为什么?GetObjectSchema返回一个UNIT,那么为什么我没有得到我指定的模式呢?

更新

如果我使用1718的值,那么它将返回该值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-12 19:26:20

根据MFCCRuntimeClass类的遗留源(可在Visual的子文件夹中找到),该版本被序列化为WORD值,并保留0xFFFF。因此,版本似乎不能大于0xFFFE (65534)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44472723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档