Macros de COM_INTERFACE_ENTRY
Estas macros escriba las interfaces de un objeto en el mapa COM para que puedan tener acceso QueryInterface.El orden de las entradas en el mapa COM son interfaces de la orden se comprueba la existencia IID coincidente durante QueryInterface.
Cada objeto que desea exponer sus interfaces mediante QueryInterface debe tener su propio mapa COM.El mapa COM comienza con BEGIN_COM_MAPmacro.Las entradas de la interfaz se agregan con uno o más de las macros de COM_INTERFACE_ENTRY , y el mapa se completa con la macro de END_COM_MAP .Por ejemplo:
BEGIN_COM_MAP(CMyObject)
COM_INTERFACE_ENTRY(IMyObject)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
Observe que la primera entrada del mapa COM debe ser una interfaz en el objeto que contiene el mapa COM.Por consiguiente, no se puede iniciar las entradas del mapa COM con COM_INTERFACE_ENTRY_CHAIN, que produce el mapa COM de un objeto diferente que se buscará en el punto donde COM_INTERFACE_ENTRY_CHAIN(COtherObject) aparece en el mapa COM del objeto.Si desea buscar el mapa COM de otro objeto primero, agregar una entrada de la interfaz de IUnknown al mapa COM, después para encadenar el mapa COM de otro objeto.Por ejemplo:
BEGIN_COM_MAP(CThisObject)
COM_INTERFACE_ENTRY(IUnknown)
COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()
Precaución |
---|
A partir de la versión 3,0, ATL utiliza la palabra clave __uuidof( class ) del compilador para obtener el IID correspondiente para una clase determinada.Debido a cambios en macros de COM_INTERFACE_ENTRY eficaces en la versión 3,0, ahora incluye simplemente el encabezado para la interfaz para utilizar, en lugar también de vincular a una biblioteca que defina el los identificadores IID correspondiente para esa interfaz.Este cambio puede producir problemas si el encabezado se generó previamente por una versión anterior de MIDL, o si mano- se codificado y no marcado apropiadamente.Si la declaración de interfaz en el encabezado no está marcada conun uuidasociado )de __declspec( , cualquier intento de utilizar la palabra clave de __uuidof para esa interfaz producirá un error.Puede revertir al anterior (las macros de ATL 2.x) COM_INTERFACE_ENTRY definiendo _ATL_NO_UUIDOF en la configuración de compilación al trabajo alrededor de los problemas con este nuevo comportamiento. |
Macros de entrada de mapa COM
Los siguientes son las macros de entrada disponible:
Requisitos
encabezado: atlcom.h