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é IUnknown
rozhraní.
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());
}