속성 맵 매크로
이러한 매크로는 속성 맵 및 항목을 정의합니다.
속성 | 설명 |
---|---|
BEGIN_PROP_MAP | ATL 속성 맵의 시작을 표시합니다. |
PROP_DATA_ENTRY | ActiveX 컨트롤의 익스텐트 또는 차원을 나타냅니다. |
PROP_ENTRY_TYPE | 속성 설명, 속성 DISPID 및 속성 페이지 CLSID를 속성 맵에 입력합니다. |
PROP_ENTRY_TYPE_EX | 속성 설명, 속성 DISPID, 속성 페이지 CLSID 및 IDispatch IID를 속성 맵에 입력합니다. |
PROP_PAGE | 속성 맵에 속성 페이지 CLSID를 입력합니다. |
END_PROP_MAP | ATL 속성 맵의 끝을 표시합니다. |
요구 사항
헤더: atlcom.h
BEGIN_PROP_MAP
개체 속성 맵의 시작을 표시합니다.
BEGIN_PROP_MAP(theClass)
매개 변수
theClass
[in] 속성 맵을 포함하는 클래스를 지정합니다.
설명
속성 맵은 속성 설명, 속성 DISPID, 속성 페이지 CLSID 및 IDispatch
IID를 저장합니다. IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl 및 ISpecifyPropertyPagesImpl 클래스는 속성 맵을 사용하여 이 정보를 검색하고 설정합니다.
ATL 프로젝트 마법사를 사용하여 개체를 만들 때 마법사는 BEGIN_PROP_MAP 지정한 다음 END_PROP_MAP 지정하여 빈 속성 맵을 만듭니다.
BEGIN_PROP_MAP 속성 맵을 사용하는 개체에 사용자 인터페이스가 없으므로 범위가 없으므로 속성 맵의 익스텐트(즉, 차원)를 저장하지 않습니다. 개체가 사용자 인터페이스를 사용하는 ActiveX 컨트롤인 경우 범위가 있습니다. 이 경우 익스텐트 제공을 위해 속성 맵에 PROP_DATA_ENTRY 지정해야 합니다.
예시
BEGIN_PROP_MAP(CMyPropCtrl)
PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
PROP_ENTRY_TYPE("Property1", 1, CLSID_MyPropPage1, VT_BSTR)
PROP_ENTRY_TYPE_EX("Caption", DISPID_CAPTION, CLSID_MyPropPage2, IID_IMyDual1, VT_BSTR)
PROP_ENTRY_INTERFACE_CALLBACK("CorrectParamCallback", 0, CLSID_MyPropPage1, AllowedCLSID, VT_DISPATCH)
PROP_ENTRY_INTERFACE_CALLBACK_EX("CorrectParamCallbackEx", 1, IID_IMyDual1, CLSID_MyPropPage2, AllowedCLSID, VT_UNKNOWN)
PROP_PAGE(CLSID_MyPropPage3)
END_PROP_MAP()
PROP_DATA_ENTRY
ActiveX 컨트롤의 익스텐트 또는 차원을 나타냅니다.
PROP_DATA_ENTRY( szDesc, member, vt)
매개 변수
szDesc
[in] 속성 설명입니다.
member
[in] 익스텐트 포함 데이터 멤버입니다. 예를 들면 다음과 같습니다 m_sizeExtent
.
vt
[in] 속성의 VARIANT 형식을 지정합니다.
설명
이 매크로를 사용하면 지정된 데이터 멤버가 유지됩니다.
ActiveX 컨트롤을 만들 때 마법사는 속성 맵 매크로 BEGIN_PROP_MAP 뒤와 속성 맵 매크로 END_PROP_MAP 앞에 이 매크로를 삽입합니다.
예시
다음 예제에서는 개체(m_sizeExtent
)의 범위가 유지됩니다.
BEGIN_PROP_MAP(CMyWindow)
PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
END_PROP_MAP()
BEGIN_PROP_MAP(CMyCompositeCtrl)
PROP_DATA_ENTRY("Width", m_nWidth, VT_UI4)
PROP_DATA_ENTRY("Height", m_nHeight, VT_UI4)
END_PROP_MAP()
PROP_ENTRY_TYPE
이 매크로를 사용하여 개체의 속성 맵에 속성 설명, 속성 DISPID 및 속성 페이지 CLSID를 입력합니다.
PROP_ENTRY_TYPE( szDesc, dispid, clsid, vt)
매개 변수
szDesc
[in] 속성 설명입니다.
dispid
[in] 속성의 DISPID입니다.
clsid
[in] 연결된 속성 페이지의 CLSID입니다. 연결된 속성 페이지가 없는 속성에 대해 특수 값 CLSID_NULL 사용합니다.
vt
[in] 속성의 형식입니다.
설명
PROP_ENTRY 매크로는 안전하지 않고 더 이상 사용되지 않습니다. PROP_ENTRY_TYPE 대체되었습니다.
BEGIN_PROP_MAP 매크로는 속성 맵의 시작을 표시하고 END_PROP_MAP 매크로는 끝을 표시합니다.
예시
BEGIN_PROP_MAP 예제를 참조하세요.
PROP_ENTRY_TYPE_EX
PROP_ENTRY_TYPE 유사하지만 개체가 여러 이중 인터페이스를 지원하는 경우 특정 IID를 지정할 수 있습니다.
PROP_ENTRY_TYPE_EX( szDesc, dispid, clsid, iidDispatch, vt)
매개 변수
szDesc
[in] 속성 설명입니다.
dispid
[in] 속성의 DISPID입니다.
clsid
[in] 연결된 속성 페이지의 CLSID입니다. 연결된 속성 페이지가 없는 속성에 대해 특수 값 CLSID_NULL 사용합니다.
iidDispatch
[in] 속성을 정의하는 이중 인터페이스의 IID입니다.
vt
[in] 속성의 형식입니다.
설명
PROP_ENTRY_EX 매크로는 안전하지 않고 더 이상 사용되지 않습니다. PROP_ENTRY_TYPE_EX 대체되었습니다.
BEGIN_PROP_MAP 매크로는 속성 맵의 시작을 표시하고 END_PROP_MAP 매크로는 끝을 표시합니다.
예시
다음 예제에서는 다음에 대한 IMyDual1
항목을 IMyDual2
그룹화합니다. 이중 인터페이스로 그룹화하면 성능이 향상됩니다.
BEGIN_PROP_MAP(CAtlEdit)
PROP_ENTRY_TYPE_EX("Caption", DISPID_CAPTION, CLSID_MyPropPage2, IID_IMyDual1, VT_BSTR)
PROP_ENTRY_TYPE_EX("Enabled", DISPID_ENABLED, CLSID_MyPropPage2, IID_IMyDual1, VT_BOOL)
PROP_ENTRY_TYPE_EX("Width", DISPID_DRAWWIDTH, CLSID_MyPropPage2, IID_IMyDual2, VT_UINT)
END_PROP_MAP()
PROP_PAGE
이 매크로를 사용하여 개체의 속성 맵에 속성 페이지 CLSID를 입력합니다.
PROP_PAGE(clsid)
매개 변수
clsid
[in] 속성 페이지의 CLSID입니다.
설명
PROP_PAGE PROP_ENTRY_TYPE 유사하지만 속성 설명이나 DISPID는 필요하지 않습니다.
참고 항목
PROP_ENTRY_TYPE 또는 PROP_ENTRY_TYPE_EX 함께 CLSID를 이미 입력한 경우 PROP_PAGE 사용하여 추가 항목을 만들 필요가 없습니다.
BEGIN_PROP_MAP 매크로는 속성 맵의 시작을 표시하고 END_PROP_MAP 매크로는 끝을 표시합니다.
예시
BEGIN_PROP_MAP(CMyCtrl)
OtherPropMapEntries
PROP_PAGE(CLSID_DatePage)
PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
END_PROP_MAP
개체 속성 맵의 끝을 표시합니다.
END_PROP_MAP()
설명
ATL 프로젝트 마법사를 사용하여 개체를 만들 때 마법사는 BEGIN_PROP_MAP 지정한 다음 END_PROP_MAP 지정하여 빈 속성 맵을 만듭니다.
예시
BEGIN_PROP_MAP 예제를 참조하세요.