MAP in ATL
来源:互联网 发布:python 编写图形界面 编辑:程序博客网 时间:2024/05/20 23:06
// =============================== QueryInterface ==============================
class ATL_NO_VTABLE CA :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CA, &CLSID_HHAidWindow>,
public CWindowImpl<CA>,
public IDispatchImpl<IA, &IID_IA, &LIBID_ALib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
//
BEGIN_COM_MAP(CA)
COM_INTERFACE_ENTRY(IA)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// =============================== 响应windows消息 ==============================
class ATL_NO_VTABLE CA :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CA, &CLSID_HHAidWindow>,
public CWindowImpl<CA>,
public IDispatchImpl<IHHAidWindow, &IID_IHHAidWindow, &LIBID_COMDualBoardPluginLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
//
BEGIN_MSG_MAP(CA)
MESSAGE_HANDLER(WM_SIZE, OnSize)MESSAGE_HANDLER(WM_CLOSE, OnClose)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
/// ==============================事件响应 =====================================
class ATL_NO_VTABLE CA:
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCOMDualBoardManager, &CLSID_COMDualBoardManager>,
public IDispEventSimpleImpl<0, CA, &__uuidof(_IEvents)>,
//
BEGIN_SINK_MAP( CA )
SINK_ENTRY_INFO( 0, __uuidof(_IA), 3, OnChange, &OnChange)
END_SINK_MAP()
/// ==============================属性 =====================================
class ATL_NO_VTABLE CATLCA:
public CComObjectRootEx<CComSingleThreadModel>,
public CStockPropImpl<CATLCA, IATLCanvasWindow>,
public IPersistStreamInitImpl<CATLCA>,
public IOleControlImpl<CATLCA>,
public IOleObjectImpl<CATLCA>,
public IOleInPlaceActiveObjectImpl<CATLCA>,
public IViewObjectExImpl<CATLCA>,
public IOleInPlaceObjectWindowlessImpl<CATLCA>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CATLCA>,
public CProxy_IATLCanvasWindowEvents<CATLCA>,
public IPersistStorageImpl<CATLCA>,
public ISpecifyPropertyPagesImpl<CATLCA>,
public IQuickActivateImpl<CATLCA>,
#ifndef _WIN32_WCE
public IDataObjectImpl<CATLCA>,
#endif
public IProvideClassInfo2Impl<&CLSID_ATLCA, &__uuidof(_IATLCAEvents), &LIBID_COMCALib>,
#ifdef _WIN32_WCE // IObjectSafety is required on Windows CE for the control to be loaded correctly
public IObjectSafetyImpl<CATLCA, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
#endif
public CComCoClass<CATLCA, &CLSID_ATLCA>,
public CComControl<CATLCA>
{
//
BEGIN_PROP_MAP(CATLCA)
PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
PROP_ENTRY_TYPE("Enabled", DISPID_ENABLED, CLSID_NULL, VT_BOOL)
END_PROP_MAP()
/// ==============================连接点 =====================================
class ATL_NO_VTABLE CATLCA:
public CComObjectRootEx<CComSingleThreadModel>,
public CStockPropImpl<CATLCA, IATLCanvasWindow>,
public IPersistStreamInitImpl<CATLCA>,
public IOleControlImpl<CATLCA>,
public IOleObjectImpl<CATLCA>,
public IOleInPlaceActiveObjectImpl<CATLCA>,
public IViewObjectExImpl<CATLCA>,
public IOleInPlaceObjectWindowlessImpl<CATLCA>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CATLCA>,
public CProxy_IATLCanvasWindowEvents<CATLCA>,
public IPersistStorageImpl<CATLCA>,
public ISpecifyPropertyPagesImpl<CATLCA>,
public IQuickActivateImpl<CATLCA>,
#ifndef _WIN32_WCE
public IDataObjectImpl<CATLCA>,
#endif
public IProvideClassInfo2Impl<&CLSID_ATLCA, &__uuidof(_IATLCAEvents), &LIBID_COMCALib>,
#ifdef _WIN32_WCE // IObjectSafety is required on Windows CE for the control to be loaded correctly
public IObjectSafetyImpl<CATLCA, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
#endif
public CComCoClass<CATLCA, &CLSID_ATLCA>,
public CComControl<CATLCA>
{
BEGIN_CONNECTION_POINT_MAP(CATLCA)
CONNECTION_POINT_ENTRY(__uuidof(_IATLCAEvents))
END_CONNECTION_POINT_MAP()
/// =========================_ATL_OBJMAP_ENTRY ======================
//
OBJECT_ENTRY_AUTO(__uuidof(CA), CA)
//
#define OBJECT_ENTRY_AUTO(clsid, class) \
__declspec(selectany) ATL::_ATL_OBJMAP_ENTRY __objMap_##class = {&clsid, class::UpdateRegistry, class::_ClassFactoryCreatorClass::CreateInstance, class::_CreatorClass::CreateInstance, NULL, 0, class::GetObjectDescription, class::GetCategoryMap, class::ObjectMain }; \
extern "C" __declspec(allocate("ATL$__m")) __declspec(selectany) ATL::_ATL_OBJMAP_ENTRY* const __pobjMap_##class = &__objMap_##class; \
OBJECT_ENTRY_PRAGMA(class)
- MAP in ATL
- ATL容器之map
- ATL development in Chart in Excel
- Using User Defined Types in COM & ATL
- Using User Defined Types in COM & ATL
- atl
- ATL
- atl
- ATL
- ATL
- ATL
- ATL
- ATL
- ATL
- ATL
- ATL
- ATL
- ATL
- typedef和define的详细区别
- linux安装开发环境
- IOS高级界面发送消息与Unity3D消息的接收
- C++ STL notes
- LogBack学习记录(二)体系架构
- MAP in ATL
- C#中操作API:
- ural 1106. Two Teams 二分图染色
- Design patterns in C++
- C++必备18个经典程序(1)
- Python raw_input和input总结 在版本2和版本3中的区别
- diff和patch使用指南
- 程序员的“七宗最” 最执着最老实最苦逼
- android ContentResolver