⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 property.h

📁 介绍属性包 IPersistPropertyBag 接口的实现方法和调用方式。属性包
💻 H
字号:
// Property.h : CMyProperty 的声明

#pragma once
#include "resource.h"       // 主符号

#include "Simple18.h"
#include "atlcomcli.h"


// CMyProperty

class ATL_NO_VTABLE CMyProperty : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CMyProperty, &CLSID_Property>,
	public IDispatchImpl<IProperty, &IID_IProperty, &LIBID_Simple18Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
	public IPersistPropertyBagImpl<CMyProperty>
{
public:
	CMyProperty()
		: m_integer(0)
		, m_bRequiresSave(false)
	{

	}

DECLARE_REGISTRY_RESOURCEID(IDR_PROPERTY)


BEGIN_COM_MAP(CMyProperty)
	COM_INTERFACE_ENTRY(IProperty)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(IPersistPropertyBag)
END_COM_MAP()

BEGIN_PROP_MAP(CMyProperty)
	// 参数:"属性名称", 接口属性序号(见IDL文件), 属性页对话窗
	PROP_ENTRY("str", 1, CLSID_NULL)
	PROP_ENTRY("integer", 2, CLSID_NULL)
END_PROP_MAP()

	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}
	
	void FinalRelease() 
	{
	}

public:

	STDMETHOD(get_str)(BSTR* pVal);
	STDMETHOD(put_str)(BSTR newVal);
	STDMETHOD(get_integer)(LONG* pVal);
	STDMETHOD(put_integer)(LONG newVal);
	// str 属性组件内部对应的成员变量
	CComBSTR m_str;
	// integer 属性组件内部对应的成员变量
	long m_integer;
	// 这个成员变量,是 IPersistPropertyBagImpl 所必须的
	bool m_bRequiresSave;
};

OBJECT_ENTRY_AUTO(__uuidof(Property), CMyProperty)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -