ここに問題があります。私はこれらの定義を持っている私のメインのアプリケーションヘッダファイルでは:私のアプリケーションでCArchive :: GetObjectSchemaを使用すると間違った値が返される
#define SOUNDROTA_VERSION_171801 171801 // 17.1.8 Beta 1
#define SOUNDROTA_VERSION_CURRENT 171801 // 17.1.8 Beta 1
私がトップでこれを持っているCObject
派生クラスを持っている:スキーマを使用しているとき
IMPLEMENT_SERIAL(CChristianLifeMinistryEntry, CObject, VERSIONABLE_SCHEMA | SOUNDROTA_VERSION_CURRENT)
物事は常にうまく働いています今までの価値私が以前使用していた値は17.0.7のように1707
のように小さくなっていましたが、私はベータ版とそれ以上の数を考慮に入れようとしていました。
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
がの値を持っている、です。
なぜですか? GetObjectSchema
はUNIT
を返すので、指定したスキーマが取得できないのはなぜですか?
更新
私は1718
の値を使用する場合、それはその値を返します。
誰も助けてくれる人はいませんか?現時点では、私は古いファイル形式をサポートしなくてはならず、自分自身のバージョン管理の仕組みを使用しなければなりませんでした。 –