Snap-In Object Macros
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Snap-In Object Macros.
These macros provide support for snap-in extensions.
BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP | Marks the beginning of the snap-in extension data class map for a Snap-In object. |
BEGIN_SNAPINTOOLBARID_MAP | Marks the beginning of the toolbar map for a Snap-In object. |
END_EXTENSION_SNAPIN_NODEINFO_MAP | Marks the end of the snap-in extension data class map for a Snap-In object. |
END_SNAPINTOOLBARID_MAP | Marks the end of the toolbar map for a Snap-In object. |
EXTENSION_SNAPIN_DATACLASS | Creates a data member for the data class of the snap-in extension. |
EXTENSION_SNAPIN_NODEINFO_ENTRY | Enters a snap-in extension data class into the snap-in extension data class map of the Snap-In object. |
SNAPINMENUID | Declares the ID of the context menu used by the Snap-In object. |
SNAPINTOOLBARID_ENTRY | Enters a toolbar into the toolbar map of the Snap-In object. |
BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP
Marks the beginning of the snap-in extension data class map.
BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP
(classname)
Parameters
classname
[in] The name of the snap-in extension data class.
Remarks
Start your snap-in extension map with the BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP
macro, add entries for each of your snap-in extension data types with the EXTENSION_SNAPIN_NODEINFO_ENTRY macro, and complete the map with the END_EXTENSION_SNAPIN_NODEINFO_MAP macro.
Example
class CMyExtSnapinExtData :
public CSnapInItemImpl<CMyExtSnapinExtData>,
public CMySnapinBase
{
public:
CMyExtSnapinExtData() {}
};
class CMyExtSnapin :
public CComObjectRoot,
public CSnapInObjectRoot<1, CMyExtSnapin>,
public IComponentDataImpl<CMyExtSnapin, CMyExtSnapin>
{
public:
CMyExtSnapin() {}
BEGIN_COM_MAP(CMyExtSnapin)
END_COM_MAP()
EXTENSION_SNAPIN_DATACLASS(CMyExtSnapinExtData)
BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP(CMyExtSnapin)
EXTENSION_SNAPIN_NODEINFO_ENTRY(CMyExtSnapinExtData)
END_EXTENSION_SNAPIN_NODEINFO_MAP()
};
BEGIN_SNAPINTOOLBARID_MAP
Declares the beginning of the toolbar ID map for the Snap-In object.
BEGIN_SNAPINTOOLBARID_MAP
(_class)
Parameters
_class
[in] Specifies the Snap-In object class.
Example
class CMySnapinData :
public CSnapInItemImpl<CMySnapinData>,
public CMySnapinBase
{
public:
CMySnapinData() {}
BEGIN_SNAPINTOOLBARID_MAP(CMySnapinData)
// IDR_MYSNAPINTOOLBAR is the resource ID of a toolbar resource.
SNAPINTOOLBARID_ENTRY(IDR_MYSNAPINTOOLBAR)
END_SNAPINTOOLBARID_MAP()
};
END_EXTENSION_SNAPIN_NODEINFO_MAP
Marks the end of the snap-in extension data class map.
END_EXTENSION_SNAPIN_NODEINFO_MAP
()
Remarks
Start your snap-in extension map with the BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP macro, add entries for each of your extension snap-in data types with the EXTENSION_SNAPIN_NODEINFO_ENTRY macro, and complete the map with the END_EXTENSION_SNAPIN_NODEINFO_MAP
macro.
Example
See the example for BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP.
END_SNAPINTOOLBARID_MAP
Declares the end of the toolbar ID map for the Snap-In object.
END_SNAPINTOOLBARID_MAP(Â
_class Â)
Parameters
_class
[in] Specifies the Snap-In object class.
Example
See the example for BEGIN_SNAPINTOOLBARID_MAP.
EXTENSION_SNAPIN_DATACLASS
Adds a data member to the snap-in extension data class for an ISnapInItemImpl-derived class.
EXTENSION_SNAPIN_DATACLASS(Â
dataClass Â)
Parameters
dataClass
[in] The data class of the snap-in extension.
Remarks
This class should also be entered into a snap-in extension data class map. Start your snap-in extension data class map with the BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP macro, add entries for each of your snap-in extension data types with the EXTENSION_SNAPIN_NODEINFO_ENTRY macro, and complete the map with the END_EXTENSION_SNAPIN_NODEINFO_MAP macro.
Example
class CMyExtSnapinExtData :
public CSnapInItemImpl<CMyExtSnapinExtData>,
public CMySnapinBase
{
public:
CMyExtSnapinExtData() {}
};
class CMyExtSnapin :
public CComObjectRoot,
public CSnapInObjectRoot<1, CMyExtSnapin>,
public IComponentDataImpl<CMyExtSnapin, CMyExtSnapin>
{
public:
CMyExtSnapin() {}
BEGIN_COM_MAP(CMyExtSnapin)
END_COM_MAP()
EXTENSION_SNAPIN_DATACLASS(CMyExtSnapinExtData)
BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP(CMyExtSnapin)
EXTENSION_SNAPIN_NODEINFO_ENTRY(CMyExtSnapinExtData)
END_EXTENSION_SNAPIN_NODEINFO_MAP()
};
EXTENSION_SNAPIN_NODEINFO_ENTRY
Adds a snap-in extension data class to the snap-in extension data class map.
EXTENSION_SNAPIN_NODEINFO_ENTRY(Â
dataClass Â)
Parameters
dataClass
[in] The data class of the snap-in extension.
Remarks
Start your snap-in extension data class map with the BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP macro, add entries for each of your snap-in extension data types with the EXTENSION_SNAPIN_NODEINFO_ENTRY
macro, and complete the map with the END_EXTENSION_SNAPIN_NODEINFO_MAP macro.
Example
See the example for BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP.
SNAPINMENUID
Use this macro to declare the context menu resource of the Snap-In object.
SNAPINMENUID(Â
id Â)
Parameters
id
[in] Identifies the context menu of the Snap-In object.
SNAPINTOOLBARID_ENTRY
Use this macro to enter a toolbar ID into the Snap-In object's toolbar ID map.
SNAPINTOOLBARID_ENTRY(Â
id Â)
Parameters
id
[in] Identifies the toolbar control.
Remarks
The BEGIN_SNAPINTOOLBARID_MAP macro marks the beginning of the toolbar ID map; the END_SNAPINTOOLBARID_MAP macro marks the end.
Example
See the example for BEGIN_SNAPINTOOLBARID_MAP.