Редагувати

Поділитися через


Delegate and interface map macros

MFC supports these macros for delegate and interface maps:

Name Description
BEGIN_DELEGATE_MAP Begins a delegate map.
BEGIN_INTERFACE_MAP Begins the definition of the interfaced map.
CommandHandler Delegate Registers callback methods with a command source.
END_DELEGATE_MAP Ends a delegate map.
END_INTERFACE_MAP Ends the interface map in the implementation file.
EVENT_DELEGATE_ENTRY Creates an entry in the delegate map.
INTERFACE_PART Used between the BEGIN_INTERFACE_MAP macro and the END_INTERFACE_MAP macro for each interface your object will support.
MAKE_DELEGATE Attaches an event handler to a managed control.

BEGIN_DELEGATE_MAP

Begins a delegate map.

Syntax

BEGIN_DELEGATE_MAP(  CLASS );

Parameters

CLASS
The class in which the managed control is hosted.

Remarks

This macro marks the beginning of a list of delegate entries, which compose a delegate map. For an example of how this macro is used, see EVENT_DELEGATE_ENTRY.

Requirements

Header: msclr\event.h

BEGIN_INTERFACE_MAP

Begins the definition of the interfaced map when used in the implementation file.

Syntax

BEGIN_INTERFACE_MAP( theClass, baseClass )

Parameters

theClass
The class in which the interface map is to be defined

baseClass
The class from which theClass derives from.

Remarks

For each interface that is implemented, there is one or more INTERFACE_PART macro invocations. For each aggregate that the class uses, there is one INTERFACE_AGGREGATE macro invocation.

For more information on interface maps, see Technical Note 38.

Requirements

Header: afxwin.h

CommandHandler Delegate

Registers callback methods with a command source.

Syntax

delegate void CommandHandler(  UINT^ cmdID  );

Parameters

cmdID
The command ID.

Remarks

This delegate registers callback methods with a command source. When you add a delegate to the command source object, the callback method becomes a handler for commands coming from the specified source.

For more information, see How to: Add Command Routing to the Windows Forms Control.

For more information on using Windows Forms, see Using a Windows Form User Control in MFC.

Requirements

Header: afxwinforms.h (defined in assembly atlmfc\lib\mfcmifc80.dll)

CommandUIHandler

Registers callback methods with a user interface update command message.

Syntax

delegate void CommandUIHandler(  unsigned int cmdID, ICommandUI^ cmdUI);

Parameters

cmdID
The command ID.

cmdUI
The command message ID.

Remarks

This delegate registers callback methods with a user interface update command message. CommandUIHandler is similar to CommandHandler except that this delegate is used with user interface object update commands. User interface update commands should be mapped one-to-one with message handler methods.

For more information on using Windows Forms, see Using a Windows Form User Control in MFC.

Requirements

Header: afxwinforms.h (defined in assembly atlmfc\lib\mfcmifc80.dll)

END_DELEGATE_MAP

Ends a delegate map.

Syntax

END_DELEGATE_MAP();

Remarks

This macro marks the end of a list of delegate entries, which compose a delegate map. For an example of how this macro is used, see EVENT_DELEGATE_ENTRY.

Requirements

Header: msclr\event.h

END_INTERFACE_MAP

Ends the interface map in the implementation file.

Syntax

END_INTERFACE_MAP( )

Remarks

For more information about interface maps, see Technical Note 38.

Requirements

Header: afxwin.h

EVENT_DELEGATE_ENTRY

Creates an entry in the delegate map.

Syntax

EVENT_DELEGATE_ENTRY(MEMBER, ARG0, ARG1);

Parameters

MEMBER
The event handler method to be attached to the control.

ARG0
The first argument of the managed event handler method, such as Object^.

ARG1
The second argument of the managed event handler method, such as EventArgs^.

Remarks

Each entry in the delegate map corresponds to a managed event handler delegate created by MAKE_DELEGATE.

Example

The following code example shows how to use EVENT_DELEGATE_ENTRY to create an entry in the delegate map for the OnClick event handler; also see the code example in MAKE_DELEGATE. For more information, see How to: Sink Windows Forms Events from Native C++ Classes.

BEGIN_DELEGATE_MAP(CMyView)
   EVENT_DELEGATE_ENTRY(OnClick, System::Object^, System::EventArgs^)
END_DELEGATE_MAP()

Requirements

Header: msclr\event.h

INTERFACE_PART

Used between the BEGIN_INTERFACE_MAP macro and the END_INTERFACE_MAP macro for each interface your object will support.

Syntax

INTERFACE_PART( theClass, iid, localClass)

Parameters

theClass
The name of the class that contains the interface map. iid
The IID that is to be mapped to the embedded class. localClass
The name of the local class.

Remarks

It allows you to map an IID to a member of the class indicated by theClass and localClass.

For more information on interface maps, see Technical Note 38.

Requirements

Header: afxwin.h

MAKE_DELEGATE

Attaches an event handler to a managed control.

Syntax

MAKE_DELEGATE( DELEGATE,  MEMBER) ;

Parameters

DELEGATE
The type of the managed event handler delegate, such as EventHandler.

MEMBER
The name of the event handler method to be attached to the control.

Remarks

This macro creates a managed event handler delegate of type DELEGATE and of the name MEMBER. The managed event handler delegate allows a native class to handle managed events.

Example

The following code example shows how to call MAKE_DELEGATE to attach an OnClick event handler to an MFC control MyControl. For a broader explanation of how this macro works in an MFC application, see How to: Sink Windows Forms Events from Native C++ Classes.

// CMyView derives from CWinFormsView.
void CMyView::OnInitialUpdate()
{
   CWinFormsView::OnInitialUpdate();

   GetControl()->Click += MAKE_DELEGATE(System::EventHandler, OnClick);
}

Requirements

Header: msclr\event.h

See also

How to: Sink Windows Forms Events from Native C++ Classes
How to: Add Command Routing to the Windows Forms Control
Macros and Globals