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

📄 simplepointworkspacefactory.h

📁 COM编程接口处理方法 多个方法调用COM库函数
💻 H
字号:
// SimplePointWorkspaceFactory.h : Declaration of the CSimplePointWorkspaceFactory

#ifndef __SIMPLEPOINTWORKSPACEFACTORY_H_
#define __SIMPLEPOINTWORKSPACEFACTORY_H_

#include "resource.h"       // main symbols

// add DTC smart pointer for our interface
_COM_SMARTPTR_TYPEDEF(ISimplePointWorkspaceHelper, __uuidof(ISimplePointWorkspaceHelper));

// Use standard map template class to provide data structure
// for a set of <folder name, plug-in workspace helper> pairs.
#include <map>
typedef std::map<CComBSTR, IPlugInWorkspaceHelperPtr> PlugInWorkspaces;

/////////////////////////////////////////////////////////////////////////////
// CSimplePointWorkspaceFactory
class ATL_NO_VTABLE CSimplePointWorkspaceFactory : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CSimplePointWorkspaceFactory, &CLSID_SimplePointWorkspaceFactory>,
	public ISupportErrorInfo,
	public ISimplePointWorkspaceFactory,
	public IPlugInWorkspaceFactoryHelper
{
public:
	CSimplePointWorkspaceFactory()
	{
	}

// Make this a Singleton class
// Note current implementation of this sample is not thread safe
// but works fine in normal ArcMap and ArcCatalog
DECLARE_CLASSFACTORY_SINGLETON(CSimplePointWorkspaceFactory)

DECLARE_REGISTRY_RESOURCEID(IDR_SIMPLEPOINTWORKSPACEFACTORY)
DECLARE_GET_CONTROLLING_UNKNOWN()

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CSimplePointWorkspaceFactory)
	COM_INTERFACE_ENTRY(ISimplePointWorkspaceFactory)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
	COM_INTERFACE_ENTRY(IPlugInWorkspaceFactoryHelper)
	COM_INTERFACE_ENTRY_AGGREGATE_BLIND(m_pInnerUnk)
END_COM_MAP()

BEGIN_CATEGORY_MAP(CWPTWorkspaceFactory)
	IMPLEMENTED_CATEGORY(__uuidof(CATID_WorkspaceFactory))
	IMPLEMENTED_CATEGORY(__uuidof(CATID_GxEnabledWorkspaceFactories))
END_CATEGORY_MAP()

	void FinalRelease();
	HRESULT FinalConstruct();

// ISupportsErrorInfo
  STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);

public:
	// IPlugInWorkspaceFactoryHelper
	STDMETHOD(get_DataSourceName)(BSTR *Name);
	STDMETHOD(get_DatasetDescription)(esriDatasetType DatasetType, BSTR *dsDesc);
	STDMETHOD(get_WorkspaceDescription)(VARIANT_BOOL plural, BSTR *wksDesc);
	STDMETHOD(get_WorkspaceFactoryTypeID)(IUID **wksFactID);
	STDMETHOD(get_WorkspaceType)(esriWorkspaceType *wksType);
	STDMETHOD(get_CanSupportSQL)(VARIANT_BOOL *CanSupportSQL);
	STDMETHOD(IsWorkspace)(BSTR wksString, VARIANT_BOOL *isWks);
	STDMETHOD(ContainsWorkspace)(BSTR parentDirectory, IFileNames *FileNames, VARIANT_BOOL *ContainsWorkspace);
	STDMETHOD(GetWorkspaceString)(BSTR parentDirectory, IFileNames *FileNames, BSTR *wksString);
	STDMETHOD(OpenWorkspace)(BSTR wksString, IPlugInWorkspaceHelper **wksHelper);

	IUnknown *m_pInnerUnk; // PlugInWorkspaceFactory Aggregation
	PlugInWorkspaces m_mapWorkspaces; // cache of open workspace pointers 

};

#endif //__SIMPLEPOINTWORKSPACEFACTORY_H_

⌨️ 快捷键说明

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