委托和接口映射宏

MFC 支持用于委托和接口映射的这些宏:

Name Description
BEGIN_DELEGATE_MAP 开始委托映射。
BEGIN_INTERFACE_MAP 开始接口映射的定义。
CommandHandler Delegate 向命令源注册回调方法。
END_DELEGATE_MAP 结束委托映射。
END_INTERFACE_MAP 终止实现文件中的接口映射。
EVENT_DELEGATE_ENTRY 在委托映射中创建条目。
INTERFACE_PART 用于对象将支持的每个接口的 BEGIN_INTERFACE_MAP 宏和 END_INTERFACE_MAP 宏之间。
MAKE_DELEGATE 将事件处理程序附加到托管控件。

BEGIN_DELEGATE_MAP

开始委托映射。

Syntax

BEGIN_DELEGATE_MAP(  CLASS );

Parameters

CLASS
托管控件所在的类。

Remarks

此宏标记了委托条目列表的开头,这些条目组成了一个委托映射。 For an example of how this macro is used, see EVENT_DELEGATE_ENTRY.

Requirements

Header: msclr\event.h

BEGIN_INTERFACE_MAP

在实现文件中使用时开始接口映射的定义。

Syntax

BEGIN_INTERFACE_MAP( theClass, baseClass )

Parameters

theClass
要在其中定义接口映射的类

baseClass
The class from which theClass derives from.

Remarks

对于实现的每个接口,有一个或多个 INTERFACE_PART 宏调用。 对于类使用的每个聚合,有一个 INTERFACE_AGGREGATE 宏调用。

有关接口映射的详细信息,请参阅技术说明 38

Requirements

Header: afxwin.h

CommandHandler Delegate

向命令源注册回调方法。

Syntax

delegate void CommandHandler(  UINT^ cmdID  );

Parameters

cmdID
命令 ID。

Remarks

此委托将向命令源注册回调方法。 当您将一个委托添加到命令源对象时,回调方法将成为来自指定源的命令的处理程序。

有关详细信息,请参阅如何:将命令路由添加到 Windows 窗体控件

有关使用 Windows 窗体的详细信息,请参阅在 MFC 中使用 Windows 窗体用户控件

Requirements

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

CommandUIHandler

使用用户界面更新命令消息注册回调方法。

Syntax

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

Parameters

cmdID
命令 ID。

cmdUI
命令消息 ID。

Remarks

此委托使用用户界面更新命令消息注册回调方法。 CommandUIHandler is similar to CommandHandler except that this delegate is used with user interface object update commands. 用户界面更新命令应与消息处理程序方法一对一映射。

有关使用 Windows 窗体的详细信息,请参阅在 MFC 中使用 Windows 窗体用户控件

Requirements

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

END_DELEGATE_MAP

结束委托映射。

Syntax

END_DELEGATE_MAP();

Remarks

此宏标记了委托条目列表的结尾,这些条目组成了一个委托映射。 For an example of how this macro is used, see EVENT_DELEGATE_ENTRY.

Requirements

Header: msclr\event.h

END_INTERFACE_MAP

终止实现文件中的接口映射。

Syntax

END_INTERFACE_MAP( )

Remarks

有关接口映射的详细信息,请参阅技术说明 38

Requirements

Header: afxwin.h

EVENT_DELEGATE_ENTRY

在委托映射中创建条目。

Syntax

EVENT_DELEGATE_ENTRY(MEMBER, ARG0, ARG1);

Parameters

MEMBER
要附加到控件的事件处理程序方法。

ARG0
托管事件处理程序方法的第一个参数,如 Object^

ARG1
托管事件处理程序方法的第二个参数,如 EventArgs^

Remarks

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

Example

以下代码示例显示如何使用 EVENT_DELEGATE_ENTRY 在委托映射中为 OnClick 事件处理程序创建一个条目;另请参阅 MAKE_DELEGATE 中的代码示例。 有关详细信息,请参阅如何:接收来自本机 C++ 类的 Windows 窗体事件

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

Requirements

Header: msclr\event.h

INTERFACE_PART

用于对象将支持的每个接口的 BEGIN_INTERFACE_MAP 宏和 END_INTERFACE_MAP 宏之间。

Syntax

INTERFACE_PART( theClass, iid, localClass)

Parameters

theClass
包含接口映射的类的名称。

iid
要映射到嵌入类的 IID。

localClass
本地类的名称。

Remarks

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

有关接口映射的详细信息,请参阅技术说明 38

Requirements

Header: afxwin.h

MAKE_DELEGATE

将事件处理程序附加到托管控件。

Syntax

MAKE_DELEGATE( DELEGATE,  MEMBER) ;

Parameters

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

MEMBER
要附加到控件的事件处理程序方法的名称。

Remarks

This macro creates a managed event handler delegate of type DELEGATE and of the name MEMBER. 托管事件处理程序委托允许本机类处理托管事件。

Example

以下代码示例显示如何调用 MAKE_DELEGATE 以将 OnClick 事件处理程序附加到 MFC 控件 MyControl。 有关此宏如何在 MFC 应用程序中工作的更详尽说明,请参阅如何:接收来自本机 C++ 类的 Windows 窗体事件

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

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

Requirements

Header: msclr\event.h

See also

如何:接收来自本机 C++ 类的 Windows 窗体事件
如何:向 Windows 窗体控件添加命令传送
宏和全局函数