다음을 통해 공유


OLE 컨트롤의 지속성

OLE 컨트롤의 한 가지 기능은 OLE 컨트롤이 파일 또는 스트림에서 속성 값을 읽거나 쓸 수 있도록 하는 속성 지속성(또는 serialization)입니다. 컨테이너 애플리케이션은 애플리케이션이 컨트롤을 제거한 후에도 serialization을 사용하여 컨트롤의 속성 값을 저장할 수 있습니다. 그런 다음 나중에 컨트롤의 새 인스턴스를 만들 때 파일 또는 스트림에서 OLE 컨트롤의 속성 값을 읽을 수 있습니다.

OLE 컨트롤의 지속성

속성 설명
PX_Blob BLOB(Binary Large Object) 데이터를 저장하는 컨트롤 속성을 교환합니다.
PX_Bool BOOL 형식의 컨트롤 속성을 교환합니다.
PX_Color 컨트롤의 색 속성을 교환합니다.
PX_Currency CY 형식 의 컨트롤 속성을 교환합니다.
PX_DataPath 형식 CDataPathProperty의 컨트롤 속성을 교환합니다.
PX_Double 형식 double의 컨트롤 속성을 교환합니다.
PX_Font 컨트롤의 글꼴 속성을 교환합니다.
PX_Float 형식 float의 컨트롤 속성을 교환합니다.
PX_IUnknown 정의되지 않은 형식의 컨트롤 속성을 교환합니다.
PX_Long 형식 long의 컨트롤 속성을 교환합니다.
PX_Picture 컨트롤의 그림 속성을 교환합니다.
PX_Short 형식 short의 컨트롤 속성을 교환합니다.
PX_ULong ULONG 형식의 컨트롤 속성을 교환합니다.
PX_UShort USHORT 형식 의 컨트롤 속성을 교환합니다.
PXstring 문자열 컨트롤 속성을 교환합니다.
PX_VBXFontConvert VBX 컨트롤의 글꼴 관련 속성을 OLE 컨트롤 글꼴 속성으로 교환합니다.

또한 AfxOleTypeMatchGuid TYPEDESC와 지정된 GUID 간의 일치를 테스트하기 위해 전역 함수가 제공됩니다.

PX_Blob

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 BLOB(Binary Large Object) 데이터를 저장하는 속성을 직렬화하거나 초기화합니다.

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

hBlob
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

hBlobDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성의 값은 hBlob에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. 이 변수는 처음 호출 PX_Blob 하기 전에 NULL로 초기화되어야 합니다(일반적으로 컨트롤의 생성자에서 수행할 수 있음). hBlobDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 초기화 또는 serialization 프로세스가 실패하는 경우에 사용됩니다.

hBlob 및 hBlobDefault 핸들은 다음을 포함하는 메모리 블록을 참조합니다.

  • 뒤에 잇는 이진 데이터의 길이(바이트)를 포함하는 DWORD입니다.

  • 실제 이진 데이터를 포함하는 메모리 블록입니다.

PX_Blob에서는 BLOB 형식 속성을 로드할 때 Windows globalalloc API를 사용하여 메모리를 할당합니다. 이 메모리를 해제할 책임이 있습니다. 따라서 컨트롤의 소멸자는 BLOB 형식 속성 핸들에서 GlobalFree를 호출하여 컨트롤에 할당된 모든 메모리를 확보해야 합니다.

PX_Bool

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 BOOL 형식의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

bValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

bDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성의 값은 bValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. bDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_Color

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 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);

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

clrValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

clrDefault
컨트롤 개발자가 정의한 속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 clrValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. clrDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_Currency

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 통화 형식의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

cyValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

cyDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 cyValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. cyDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_DataPath

CDataPathProperty 형식의 데이터 경로 속성을 serialize 하거나 초기화하려면 컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

dataPathProperty
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

데이터 경로 속성은 비동기 컨트롤 속성을 구현합니다. 속성의 값은 dataPathProperty에서 참조하는 변수에서 읽거나 적절하게 기록됩니다.

PX_Double

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 형식 double의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

doubleValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

doubleDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 doubleValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. doubleDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_Font

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 글꼴 형식의 속성을 직렬화하거나 초기화합니다.

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

font
글꼴 속성을 포함하는 개체에 대한 참조 CFontHolder 입니다.

pFontDesc
pFontDispAmbient가 NULL인 경우 글꼴 속성의 기본 상태를 초기화하는 데 사용할 값이 포함된 구조체에 대한 포인터 FONTDESC 입니다.

pFontDispAmbient
글꼴 속성의 기본 상태를 초기화하는 데 사용할 글꼴 인터페이스에 대한 포인터 IFontDisp 입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 적절한 경우 참조에서 읽거나 참조로 fontCFontHolder 기록됩니다. pFontDescpFontDispAmbient가 지정된 경우 필요한 경우 속성의 기본값을 초기화하는 데 사용됩니다. 이러한 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다. 일반적으로 pFontDesc에 대해 NULL을 전달하고 pFontDispAmbient에 대해 반환된 COleControl::AmbientFont 앰비언트 값을 전달합니다. 반환 COleControl::AmbientFont 된 글꼴 개체는 멤버 함수를 호출하여 IFontDisp::Release 해제해야 합니다.

PX_Float

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 형식 float의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

floatValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

floatDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 floatValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. floatDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_IUnknown

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 파생 인터페이스가 있는 개체 IUnknown가 나타내는 속성을 직렬화하거나 초기화합니다.

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

pUnk
속성 값을 나타내는 개체의 인터페이스를 포함하는 변수에 대한 참조입니다.

iid
컨트롤에서 사용되는 속성 개체의 인터페이스를 나타내는 인터페이스 ID입니다.

pUnkDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 pUnk에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. pUnkDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_Long

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 형식 long의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

lValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

lDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 lValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. lDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_Picture

컨트롤의 멤버 함수 내에서 이 함수를 호출하여 컨트롤의 DoPropExchange 그림 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

pict
속성이 저장되는 CPictureHolder 개체(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

pictDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성의 값은 pict에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. pictDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_Short

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 형식 short의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

sValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

sDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 sValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. sDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_ULong

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 ULONG 형식의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

ulValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

ulDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 ulValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. ulDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_UShort

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 형식 unsigned short의 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

usValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

usDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 usValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. usDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PXstring

컨트롤의 DoPropExchange 멤버 함수 내에서 이 함수를 호출하여 문자열 속성을 직렬화하거나 초기화합니다.

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

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

pszPropName
교환되는 속성의 이름입니다.

strValue
속성이 저장되는 변수(일반적으로 클래스의 멤버 변수)에 대한 참조입니다.

strDefault
속성의 기본값입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

속성 값은 strValue에서 참조하는 변수에서 읽거나 적절하게 기록됩니다. strDefault를 지정하면 속성의 기본값으로 사용됩니다. 이 값은 어떤 이유로든 컨트롤의 serialization 프로세스가 실패하는 경우에 사용됩니다.

PX_VBXFontConvert

VBX 컨트롤의 DoPropExchange 글꼴 관련 속성을 변환하여 글꼴 속성을 초기화하려면 컨트롤의 멤버 함수 내에서 이 함수를 호출합니다.

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

매개 변수

pPX
CPropExchange 개체에 대한 포인터입니다(일반적으로 매개 변수DoPropExchange로 전달됨).

font
변환된 VBX 글꼴 관련 속성을 포함할 OLE 컨트롤의 글꼴 속성입니다.

Return Value

교환에 성공한 경우 0이 아닌 경우 실패하면 0입니다.

설명

이 함수는 VBX 컨트롤을 직접 대체하도록 설계된 OLE 컨트롤에서만 사용해야 합니다. Visual Basic 개발 환경에서 해당 대체 OLE 컨트롤을 사용하도록 VBX 컨트롤이 포함된 폼을 변환하는 경우 해당 컨트롤의 IDataObject::SetData 함수를 호출하여 VBX 컨트롤의 속성 데이터가 포함된 속성 집합을 전달합니다. 이 작업을 수행하면 컨트롤의 DoPropExchange 함수가 호출됩니다. DoPropExchange 를 호출 PX_VBXFontConvert 하여 VBX 컨트롤의 글꼴 관련 속성(예: "FontName", "FontSize" 등)을 OLE 컨트롤의 글꼴 속성에 해당하는 구성 요소로 변환할 수 있습니다.

PX_VBXFontConvert 는 컨트롤이 실제로 VBX 양식 애플리케이션에서 변환되는 경우에만 호출되어야 합니다. 다음은 그 예입니다.

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

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

참고 항목

매크로 및 전역