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

📄 smileyentity.h

📁 autocad 编程 对autocad 开发软件的朋友提供
💻 H
字号:
//
// (C) Copyright 2000 by Autodesk, Inc. 
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted, 
// provided that the above copyright notice appears in all copies and 
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting 
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. 
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC. 
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to 
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//
//

// SmileyEntity.h : Declaration of the CSmileyEntity

#ifndef __SMILEYENTITY_H_
#define __SMILEYENTITY_H_

#include "resource.h"       // main symbols
#include "..\SmileyDb\AsdkSmiley.h"
#include "SmileyCats.h"
#include "axtempl.h"

/////////////////////////////////////////////////////////////////////////////
// CSmileyEntity
class ATL_NO_VTABLE CSmileyEntity : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CSmileyEntity, &CLSID_SmileyEntity>,
	public ISupportErrorInfo,
    public IAcadEntityDispatchImpl<CSmileyEntity,&CLSID_SmileyEntity, ISmileyEntity, &IID_ISmileyEntity, &LIBID_SmileyDb>,
    public IOPMPropertyExtensionImpl<CSmileyEntity>,
    public IOPMPropertyExpander
{
public:
	CSmileyEntity()
	{
	}

//this function replaces the DECLARE_REGISTRY_RESOURCEID(IDR_SMILEY) macro
static HRESULT WINAPI UpdateRegistry(BOOL bRegister)
{
extern HRESULT setupRegistrar(IRegistrar** p);
    CComPtr<IRegistrar> pReg;
    HRESULT hRes;
    if (FAILED(hRes = setupRegistrar(&pReg)))
        return hRes;
    //In the AutoCAD environment it is better to link ATL dynamically
    return AtlModuleUpdateRegistryFromResourceD(&_Module,
			(LPCOLESTR)MAKEINTRESOURCE(IDR_SMILEYENTITY), bRegister, NULL,pReg);
}
//DECLARE_REGISTRY_RESOURCEID(IDR_SMILEYENTITY)
DECLARE_NOT_AGGREGATABLE(CSmileyEntity)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CSmileyEntity)
	COM_INTERFACE_ENTRY(ISmileyEntity)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
    COM_INTERFACE_ENTRY(IAcadBaseObject)
	COM_INTERFACE_ENTRY(IAcadObject)
	COM_INTERFACE_ENTRY(IAcadEntity)
    COM_INTERFACE_ENTRY(IRetrieveApplication)
	COM_INTERFACE_ENTRY(IConnectionPointContainer)
    COM_INTERFACE_ENTRY(IOPMPropertyExtension)
    COM_INTERFACE_ENTRY(ICategorizeProperties)
    //COM_INTERFACE_ENTRY(IPerPropertyBrowsing)
    COM_INTERFACE_ENTRY(IOPMPropertyExpander)
END_COM_MAP()


// ISupportsErrorInfo
	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IAcadBaseObjectImpl
    virtual HRESULT CreateNewObject(AcDbObjectId& objId, AcDbObjectId& ownerId, TCHAR* keyName);

// ISmileyEntity
public:
	STDMETHOD(ScaleRadius)(double r);
	STDMETHODIMP get_Radius(double FAR* r);
	STDMETHODIMP put_Radius(double r); 
	STDMETHODIMP get_Center(VARIANT* pv);
	STDMETHODIMP put_Center(VARIANT var);
	STDMETHODIMP get_Normal(VARIANT* pv);
	STDMETHODIMP put_Normal(VARIANT var);
	STDMETHODIMP get_EyesSize(double FAR* s);
	STDMETHODIMP put_EyesSize(double s); 
	STDMETHODIMP get_EyesApart(double FAR* s);
	STDMETHODIMP put_EyesApart(double s); 
	STDMETHODIMP get_EyesHeight(double FAR* h);
	STDMETHODIMP put_EyesHeight(double h); 
	STDMETHODIMP get_MouthCenter(VARIANT* pv);
	STDMETHODIMP get_MouthLeft(VARIANT* pv);
	STDMETHODIMP put_MouthLeft(VARIANT var);
	STDMETHODIMP get_MouthBottom(VARIANT* pv);
	STDMETHODIMP put_MouthBottom(VARIANT var);
	STDMETHODIMP get_MouthRight(VARIANT* pv);
	STDMETHODIMP put_MouthRight(VARIANT var);

	//
	// OPM
	//
	// IOPMPropertyExtension

BEGIN_OPMPROP_MAP()
    OPMPROP_ENTRY(0, 0x00000001, PROPCAT_Face, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000002, PROPCAT_Face, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000003, PROPCAT_Face, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000004, PROPCAT_Eyes, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000005, PROPCAT_Eyes, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000006, PROPCAT_Eyes, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000007, PROPCAT_Mouth, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000008, PROPCAT_Mouth, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x00000009, PROPCAT_Mouth, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
    OPMPROP_ENTRY(0, 0x0000000A, PROPCAT_Mouth, 0, 0, 0, "", 0, 1, IID_NULL, IID_NULL, "")
END_OPMPROP_MAP()

	STDMETHODIMP GetCategoryName(
		PROPCAT propcat,	// [in]
		LCID lcid,			// [in]
		BSTR* pbstrName);	// [out]

    virtual HINSTANCE GetResourceInstance()
    {
        return _Module.GetResourceInstance();
    }


	//IOPMPropertyExpander

	STDMETHOD(GetElementValue)(
		DISPID dispID,		// [in] 
		DWORD dwCookie,		// [in]
		VARIANT * pVarOut);	// [out]

	STDMETHOD(SetElementValue)(
		DISPID dispID,		// [in]
		DWORD dwCookie,		// [in]
		VARIANT VarIn);		// [in]       

	STDMETHOD(GetElementStrings)( 
		DISPID dispID,	// [in]
		OPMLPOLESTR __RPC_FAR *pCaStringsOut,	// [out]
		OPMDWORD __RPC_FAR *pCaCookiesOut);	// [out]

	STDMETHOD(GetElementGrouping)(
        DISPID dispID,	// [in]
		short *groupingNumber);	// [out]

	STDMETHOD(GetGroupCount)(
        DISPID dispID,	// [in]
		long *nGroupCnt);	// [out]

	STDMETHOD(GetPredefinedStrings)(
        DISPID dispID,	// [in]
        CALPOLESTR *pCaStringsOut,	// [out]
        CADWORD *pCaCookiesOut);	// [out]

	STDMETHOD(GetPredefinedValue)(
        DISPID dispID,	// [in] 
        DWORD dwCookie,	// [out] 
        VARIANT *pVarOut);	// [out]

	// ICategorizeProperties methods

    STDMETHODIMP MapPropertyToCategory(DISPID dispid, PROPCAT* ppropcat)
    {
        return AcOpmMapPropertyToCategory(reinterpret_cast<IUnknown*>(this), CSmileyEntity::GetOPMPropertyMap(), dispid, ppropcat);
    }

	/*
	// IPerPropertyBrowsing methods
    STDMETHODIMP GetDisplayString(DISPID dispID, BSTR *pBstr)
    {
        return AcOpmGetDisplayString(reinterpret_cast<IUnknown*>(this), CSmileyEntity::GetOPMPropertyMap(), dispID, pBstr);
    }
    
    STDMETHODIMP MapPropertyToPage(DISPID dispID, CLSID *pClsid)
    {
        return AcOpmMapPropertyToPage(reinterpret_cast<IUnknown*>(this), CSmileyEntity::GetOPMPropertyMap(), dispID, pClsid);
    }
	*/

};

#endif //__SMILEYENTITY_H_

⌨️ 快捷键说明

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