Sdílet prostřednictvím


Trvalost ovládacích prvků OLE

Jednou z možností ovládacích prvků OLE je trvalost vlastností (nebo serializace), která umožňuje ovládacímu prvku OLE číst nebo zapisovat hodnoty vlastností do a ze souboru nebo datového proudu. Aplikace kontejneru může použít serializaci k uložení hodnot vlastností ovládacího prvku i po zničení aplikace ovládacího prvku. Hodnoty vlastností ovládacího prvku OLE lze pak číst ze souboru nebo datového proudu při vytvoření nové instance ovládacího prvku později.

Trvalost ovládacích prvků OLE

Název Popis
PX_Blob Vymění vlastnost ovládacího prvku, která ukládá binární velké objekty (BLOB) data.
PX_Bool Vymění vlastnost ovládacího prvku typu BOOL.
PX_Color Vymění barevnou vlastnost ovládacího prvku.
PX_Currency Vymění vlastnost ovládacího prvku typu CY.
PX_DataPath Vymění vlastnost ovládacího prvku typu CDataPathProperty.
PX_Double Vymění vlastnost ovládacího prvku typu double.
PX_Font Vymění vlastnost písma ovládacího prvku.
PX_Float Vymění vlastnost ovládacího prvku typu float.
PX_IUnknown Vymění vlastnost ovládacího prvku nedefinovaného typu.
PX_Long Vymění vlastnost ovládacího prvku typu long.
PX_Picture Vymění vlastnost obrázku ovládacího prvku.
PX_Short Vymění vlastnost ovládacího prvku typu short.
PX_ULong Vymění vlastnost ovládacího prvku typu ULONG.
PX_UShort Vymění vlastnost ovládacího prvku typu USHORT.
PXstring Vymění vlastnost ovládacího prvku řetězce znaků.
PX_VBXFontConvert Vymění vlastnosti související s písmem ovládacího prvku VBX do vlastnosti písma ovládacího prvku OLE.

Kromě toho je k dispozici globální funkce, AfxOleTypeMatchGuid která testuje shodu mezi typeDESC a daným identifikátorem GUID.

PX_Blob

Voláním této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializujete nebo inicializujete vlastnost, která ukládá data binárního velkého objektu (BLOB).

BOOL PX_Blob(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    HGLOBAL& hBlob,
    HGLOBAL hBlobDefault = NULL);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

hBlob
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

hBlobDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti se podle potřeby načte nebo zapíše do proměnné, na kterou odkazuje hBlob. Tato proměnná by se měla inicializovat na hodnotu NULL před prvním voláním PX_Blob (obvykle to lze provést v konstruktoru ovládacího prvku). Pokud je zadán hBlobDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se používá, pokud z nějakého důvodu se inicializace nebo serializace ovládacího prvku nezdaří.

Popisovače hBlob a hBlobDefault odkazují na blok paměti, který obsahuje následující:

  • A DWORD, který obsahuje délku binárních dat, která následují v bajtech, následovaná okamžitě

  • Blok paměti obsahující skutečná binární data.

Všimněte si, že PX_Blob při načítání vlastností typu blob přidělí paměť pomocí rozhraní API GlobalAlloc systému Windows. Zodpovídáte za uvolnění této paměti. Destruktor vašeho ovládacího prvku by proto měl volat GlobalFree na libovolný popisovač vlastnosti typu BLOB, aby se uvolnila jakákoli paměť přidělená vašemu ovládacímu prvku.

PX_Bool

Voláním této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializujete nebo inicializujete vlastnost typu BOOL.

BOOL PX_Bool(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    BOOL& bValue);

BOOL PX_Bool(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    BOOL& bValue,
    BOOL bDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

bValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

bDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti bude podle potřeby načtena z proměnné nebo zapsána do proměnné odkazované hodnotou bValue. Pokud je zadána funkce bDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_Color

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost typu OLE_COLOR.

BOOL PX_Color(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    OLE_COLOR& clrValue);

BOOL PX_Color(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    OLE_COLOR& clrValue,
    OLE_COLOR clrDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

clrValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

clrDefault
Výchozí hodnota vlastnosti definovaná vývojářem ovládacího prvku.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti se načte nebo zapíše do proměnné odkazované clrValue podle potřeby. Pokud je zadán clrDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_Currency

Voláním této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializujete nebo inicializujete vlastnost typu měna.

BOOL PX_Currency(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CY& cyValue);

BOOL PX_Currency(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CY& cyValue,
    CY cyDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

cyValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

cyDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti bude podle potřeby načtena z proměnné nebo zapsána do proměnné, na kterou odkazuje cyValue. Pokud je zadán cyDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_DataPath

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost cesty k datům typu CDataPathProperty.

BOOL PX_DataPath(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CDataPathProperty& dataPathProperty);

BOOL PX_DataPath(
    CPropExchange* pPX,
    CDataPathProperty& dataPathProperty);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

dataPathProperty
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Vlastnosti cesty k datům implementují vlastnosti asynchronního ovládacího prvku. Hodnota vlastnosti bude podle potřeby načtena z proměnné nebo zapsána do proměnné odkazované pomocí dataPathProperty.

PX_Double

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost typu double.

BOOL PX_Double(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    double& doubleValue);

BOOL PX_Double(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    double& doubleValue,
    double doubleDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

doubleValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

doubleDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti je načtena nebo zapsána do proměnné odkazované doubleValue podle potřeby. Pokud je zadán doubleDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_Font

Voláním této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializujete nebo inicializujete vlastnost typu písma.

BOOL PX_Font(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CFontHolder& font,
    const FONTDESC FAR* pFontDesc = NULL,
    LPFONTDISP pFontDispAmbient = NULL);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

písmo
Odkaz na CFontHolder objekt, který obsahuje vlastnost písma.

pFontDesc
Ukazatel na FONTDESC strukturu obsahující hodnoty, které se mají použít při inicializaci výchozího stavu vlastnosti písma, v případě, že pFontDispAmbient je NULL.

pFontDispAmbient
Ukazatel na IFontDisp rozhraní písma, které se má použít při inicializaci výchozího stavu vlastnosti písma.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti je načtena z nebo zapsána do font, CFontHolder odkaz, pokud je to vhodné. Pokud jsou zadány pFontDesc a pFontDispAmbient , použijí se k inicializaci výchozí hodnoty vlastnosti v případě potřeby. Tyto hodnoty se použijí, pokud z nějakého důvodu proces serializace ovládacího prvku selže. Obvykle předáte hodnotu NULL pro pFontDesc a okolní hodnotu vrácenou COleControl::AmbientFont pro pFontDispAmbient. Všimněte si, že objekt písma vrácený COleControl::AmbientFont voláním IFontDisp::Release členské funkce musí být uvolněn.

PX_Float

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost typu float.

BOOL PX_Float(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    float& floatValue);

BOOL PX_Float(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    float& floatValue,
    float floatDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

floatValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

floatDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti je načtena z proměnné nebo zapsána do proměnné odkazované floatValue podle potřeby. Pokud je zadán floatDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_IUnknown

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange k serializaci nebo inicializaci vlastnosti reprezentované objektem s -odvozené IUnknownrozhraní.

BOOL PX_IUnknown(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    LPUNKNOWN& pUnk,
    REFIID iid,
    LPUNKNOWN pUnkDefault = NULL);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

punk
Odkaz na proměnnou obsahující rozhraní objektu, který představuje hodnotu vlastnosti.

iid
ID rozhraní označující, které rozhraní objektu vlastnosti je používáno ovládacím prvku.

pUnkDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti se podle potřeby načte nebo zapíše do proměnné odkazované pomocí pUnk. Pokud je zadán parametr pUnkDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_Long

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost typu long.

BOOL PX_Long(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    long& lValue);

BOOL PX_Long(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    long& lValue,
    long lDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

lValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

LDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti je načtena nebo zapsána do proměnné odkazované lValue podle potřeby. Pokud je zadán lDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_Picture

Voláním této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializujete nebo inicializujete vlastnost obrázku ovládacího prvku.

BOOL PX_Picture(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CPictureHolder& pict);

BOOL PX_Picture(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CPictureHolder& pict,
    CPictureHolder& pictDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

Pict
Odkaz na objekt CPictureHolder , kde je vlastnost uložena (obvykle členská proměnná vaší třídy).

pictDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti se podle potřeby načítá nebo zapisuje do proměnné, na kterou odkazuje pict. Pokud je zadán parametr pictDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_Short

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost typu short.

BOOL PX_Short(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    short& sValue);

BOOL PX_Short(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    short& sValue,
    short sDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

sValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

sDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti je načtena nebo zapsána do proměnné odkazované hodnotou sValue podle potřeby. Pokud je zadán sDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_ULong

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost typu ULONG.

BOOL PX_ULong(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    ULONG& ulValue);

BOOL PX_ULong(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    ULONG& ulValue,
    long ulDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti

ulValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

UlDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti je načtena nebo zapsána do proměnné odkazované ulValue podle potřeby. Pokud je zadán parametr ulDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_UShort

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost typu unsigned short.

BOOL PX_UShort(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    USHORT& usValue);

BOOL PX_UShort(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    USHORT& usValue,
    USHORT usDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti

usValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

UsDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti se podle potřeby načítá nebo zapisuje do proměnné odkazované hodnotou usValue. Pokud je zadán parametr usDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PXstring

Volání této funkce v rámci členské funkce ovládacího prvku DoPropExchange serializovat nebo inicializovat vlastnost řetězce znaků.

BOOL PXstring(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CString& strValue);

BOOL PXstring(
    CPropExchange* pPX,
    LPCTSTR pszPropName,
    CString& strValue,
    CString strDefault);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

pszPropName
Název vyměněné vlastnosti.

strValue
Odkaz na proměnnou, ve které je vlastnost uložena (obvykle členová proměnná vaší třídy).

strDefault
Výchozí hodnota vlastnosti.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Hodnota vlastnosti je načítána nebo zapsána do proměnné odkazované strValue podle potřeby. Pokud je zadán strDefault , použije se jako výchozí hodnota vlastnosti. Tato hodnota se použije, pokud z nějakého důvodu proces serializace ovládacího prvku selže.

PX_VBXFontConvert

Voláním této funkce v rámci členské funkce ovládacího prvku DoPropExchange inicializujete vlastnost písma převodem vlastností souvisejících s písmem ovládacího prvku VBX.

BOOL PX_VBXFontConvert(
    CPropExchange* pPX,
    CFontHolder& font);

Parametry

pPX
Ukazatel na objekt CPropExchange (obvykle předán jako parametr do DoPropExchange).

písmo
Vlastnost písma ovládacího prvku OLE, který bude obsahovat převedené vlastnosti související s písmem VBX.

Návratová hodnota

Nenulové, pokud byla výměna úspěšná; 0 v případě neúspěchu.

Poznámky

Tuto funkci by měl používat pouze ovládací prvek OLE, který je navržen jako přímá náhrada pro ovládací prvek VBX. Když vývojové prostředí jazyka Visual Basic převede formulář obsahující ovládací prvek VBX na použití odpovídajícího náhradního ovládacího prvku OLE, zavolá funkci ovládacího prvku IDataObject::SetData a předá sadu vlastností, která obsahuje data vlastností ovládacího prvku VBX. Tato operace zase způsobí vyvolání funkce ovládacího prvku DoPropExchange . DoPropExchange může volat PX_VBXFontConvert převod vlastností souvisejících s písmem ovládacího prvku VBX (například FontName, FontSize atd.) na odpovídající součásti vlastnosti písma ovládacího prvku OLE.

PX_VBXFontConvert by se mělo volat pouze v případě, že je ovládací prvek skutečně převeden z aplikace formuláře VBX. Příklad:

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

   if (IsConvertingVBX())
      PX_VBXFontConvert(pPX, InternalGetFont());
}

Viz také

Makra a globální objekty