Sdílet prostřednictvím


MFC – ovládací prvky ActiveX: Serializace

Tento článek popisuje, jak serializovat ovládacího prvku ActiveX.Serializace je proces čtení nebo zápisu na trvalé paměťové médium, například souboru na disku.Knihovna Microsoft Foundation Class (MFC) poskytuje integrovanou podporu pro serializaci třídy CObject.COleControlrozšiřuje tuto podporu pro ovládací prvky ActiveX pomocí vlastnosti mechanismus výměny.

Přepsání serializace pro ovládací prvky ActiveX je implementováno COleControl::DoPropExchange.Tato funkce volána při načítání a ukládání objektu ovládacího prvku jsou uloženy všechny vlastnosti, které jsou implementovány s členské proměnné nebo členské proměnné se oznámení o změně.

Následující témata se týkají hlavních otázkách týkající se serializace ovládacího prvku ActiveX:

  • Provádění DoPropExchange funkce serializovat objekt ovládacího prvku

  • Serializace proces přizpůsobení

  • Implementace podpory verzí

Implementace funkce DoPropExchange

Použijete-li ke generování projektu ovládacího prvku ActiveX Control Wizard, několik výchozích obslužných funkcí jsou automaticky přidány do třídy ovládacího prvku, včetně výchozí implementace COleControl::DoPropExchange.Následující příklad ukazuje kód přidány do třídy vytvořené pomocí Průvodce ovládacím prvkem ActiveX:

void CMyAxUICtrl::DoPropExchange(CPropExchange* pPX)
{
   ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
   COleControl::DoPropExchange(pPX);

   // TODO: Call PX_ functions for each persistent custom property.
}

Pokud chcete vytvořit trvalé vlastnosti, změnit DoPropExchange přidáním volání funkce výměny vlastnost.Následující příklad ukazuje vlastní vlastnost Boolean CircleShape, kde CircleShape vlastnost nemá výchozí hodnotu serializace TRUE:

void CMyAxSerCtrl::DoPropExchange(CPropExchange* pPX)
{
    ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
    COleControl::DoPropExchange(pPX);


...


   PX_Bool(pPX, _T("CircleShape"), m_bCircleShape, TRUE);
}

V následující tabulce jsou uvedeny možné vlastnosti exchange funkce, které můžete použít k serializaci vlastnosti ovládacího prvku:

Vlastnosti funkce serveru exchange

Účel

(PX_Blob)

Serializuje typ dat vlastnosti binární rozsáhlé objekt (BLOB).

(PX_Bool)

Serializuje typ booleovská vlastnost.

(PX_Color)

Serializuje typ vlastnosti.

(PX_Currency)

Serializuje typ CY vlastnosti (měna).

(PX_Double)

Serializuje typ dvojité vlastnost.

(PX_Font)

Serializuje vlastnost typ písma.

(PX_Float)

Serializuje typ float vlastnost.

(PX_IUnknown)

Serializuje vlastnost typu LPUNKNOWN.

(PX_Long)

Serializuje typ dlouho vlastnost.

(PX_Picture)

Serializuje typ vlastnosti obrázku.

(PX_Short)

Serializuje typ Krátký vlastnost.

(PX_String)

Serializuje typu CString vlastnost.

(PX_ULong)

Serializuje typ ULONG vlastnost.

(PX_UShort)

Serializuje typ USHORT vlastnost.

Další informace o těchto funkcích serveru exchange vlastnost, viz Přetrvávání z ovládacích prvků technologie OLE v Odkaz knihovny MFC.

Nastavení výchozího chování DoPropExchange

Výchozí implementace DoPropertyExchange (jak je znázorněno v předchozím tématu) zavolá základní třída COleControl.To jsou sadu vlastností, které jsou automaticky podporovány COleControl, který používá více prostoru než serializaci vlastní vlastnosti ovládacího prvku.Odebrání tohoto volání umožňuje objekt serializovat pouze ty vlastnosti, které považujete za důležité.Všechny státy uloženou vlastnost ovládací prvek implementoval nesmí být serializován při uložení nebo načtení objektu ovládacího prvku, pokud výslovně nepřidáte PX_ volá pro ně.

Implementace podpory verzí

Podpora verze umožňuje ovládací prvek ActiveX revidované přidat nové trvalé vlastnosti a být schopen zjišťovat a načíst trvalý stav vytvořený ve starší verzi ovládacího prvku.Chcete-li k dispozici verzi ovládacího prvku jako součást jeho trvalých dat, zavolejte COleControl::ExchangeVersion v ovládacím prvku DoPropExchange funkce.Toto volání je automaticky vloženy, pokud ovládací prvek ActiveX byla vytvořena pomocí Průvodce ovládacím prvkem ActiveX.Mohou být odstraněny, pokud není nutné podporu verze.Náklady na velikost ovládacího prvku je však velmi malé (4 bajty) pro lepší flexibilitu, která poskytuje podporu verze.

Pokud nebyl ovládací prvek vytvořit pomocí Průvodce ovládacím prvkem ActiveX, přidejte volání COleControl::ExchangeVersion vložením následujícího řádku na začátek vašeho DoPropExchange funkce (před voláním COleControl::DoPropExchange):

void CMyAxSerCtrl::DoPropExchange(CPropExchange* pPX)
{
    ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
    COleControl::DoPropExchange(pPX);


...


}

Můžete použít libovolný DWORD jako číslo verze.Projekty, které jsou generovány pomocí Průvodce ovládacím prvkem ActiveX pomocí _wVerMinor a _wVerMajor jako výchozí.Jedná se o globální konstanty definované v souboru implementace třídy ovládacího prvku ActiveX projektu.Ve zbytku vašeho DoPropExchange funkce, můžete volat CPropExchange::GetVersion kdykoli načíst verzi při ukládání nebo načítání.

V následujícím příkladu má verze 1 Tento ovládací prvek vzorek "ReleaseDate" vlastnost.Verze 2 přidá vlastnost "OriginalDate".Ovládací prvek je pokyn k načtení trvalý stav ze staré verze, inicializuje členské proměnné nové vlastnosti na výchozí hodnotu.

void CMyAxSerCtrl::DoPropExchange(CPropExchange* pPX)
{
    ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
    COleControl::DoPropExchange(pPX);

   PX_Long(pPX, _T("ReleaseDate"), m_ReleaseDate);
   if (pPX->GetVersion() >= MAKELONG(0, 2))
   {
      PX_Long(pPX, _T("OriginalDate"), m_OriginalDate);
   }
   else
   {
      if (pPX->IsLoading())
         m_OriginalDate = 0;
   }


...


}

Ve výchozím nastavení ovládací prvek "převede" stará data do nejnovějšího formátu.Například pokud verze 2 ovládací prvek načítá data, který byl uložen ve verzi 1, bude zapsána ve formátu verze 2 při ukládání znovu.Pokud chcete, aby ovládací prvek pro uložení dat ve formátu poslední čtení, předat FALSE jako třetí parametr při volání ExchangeVersion.Tento třetí parametr je nepovinný a je TRUE ve výchozím nastavení.

Viz také

Koncepty

MFC – ovládací prvky ActiveX