委托和接口映射宏
MFC 支持用于委托和接口映射的这些宏:
名称 | 描述 |
---|---|
BEGIN_DELEGATE_MAP | 开始委托映射。 |
BEGIN_INTERFACE_MAP | 开始接口映射的定义。 |
CommandHandler 委托 | 向命令源注册回调方法。 |
END_DELEGATE_MAP | 结束委托映射。 |
END_INTERFACE_MAP | 终止实现文件中的接口映射。 |
EVENT_DELEGATE_ENTRY | 在委托映射中创建条目。 |
INTERFACE_PART | 用于对象将支持的每个接口的 BEGIN_INTERFACE_MAP 宏和 END_INTERFACE_MAP 宏之间。 |
MAKE_DELEGATE | 将事件处理程序附加到托管控件。 |
BEGIN_DELEGATE_MAP
开始委托映射。
语法
BEGIN_DELEGATE_MAP( CLASS );
参数
CLASS
托管控件所在的类。
备注
此宏标记了委托条目列表的开头,这些条目组成了一个委托映射。 有关如何使用此宏的示例,请参阅 EVENT_DELEGATE_ENTRY。
要求
标头:msclr\event.h
BEGIN_INTERFACE_MAP
在实现文件中使用时开始接口映射的定义。
语法
BEGIN_INTERFACE_MAP( theClass, baseClass )
参数
theClass
要在其中定义接口映射的类
baseClass
theClass 派生自的类。
备注
对于实现的每个接口,有一个或多个 INTERFACE_PART 宏调用。 对于类使用的每个聚合,有一个 INTERFACE_AGGREGATE 宏调用。
有关接口映射的详细信息,请参阅技术说明 38。
要求
标头:afxwin.h
CommandHandler 委托
向命令源注册回调方法。
语法
delegate void CommandHandler( UINT^ cmdID );
参数
cmdID
命令 ID。
注解
此委托将向命令源注册回调方法。 当您将一个委托添加到命令源对象时,回调方法将成为来自指定源的命令的处理程序。
有关详细信息,请参阅如何:将命令路由添加到 Windows 窗体控件。
有关使用 Windows 窗体的详细信息,请参阅在 MFC 中使用 Windows 窗体用户控件。
要求
标头:afxwinforms.h(在程序集 atlmfc\lib\mfcmifc80.dll 中定义)
CommandUIHandler
使用用户界面更新命令消息注册回调方法。
语法
delegate void CommandUIHandler( unsigned int cmdID, ICommandUI^ cmdUI);
参数
cmdID
命令 ID。
cmdUI
命令消息 ID。
备注
此委托使用用户界面更新命令消息注册回调方法。 CommandUIHandler
与 CommandHandler 类似,但此委托与用户界面对象更新命令一起使用。 用户界面更新命令应与消息处理程序方法一对一映射。
有关使用 Windows 窗体的详细信息,请参阅在 MFC 中使用 Windows 窗体用户控件。
要求
标头:afxwinforms.h(在程序集 atlmfc\lib\mfcmifc80.dll 中定义)
END_DELEGATE_MAP
结束委托映射。
语法
END_DELEGATE_MAP();
备注
此宏标记了委托条目列表的结尾,这些条目组成了一个委托映射。 有关如何使用此宏的示例,请参阅 EVENT_DELEGATE_ENTRY。
要求
标头:msclr\event.h
END_INTERFACE_MAP
终止实现文件中的接口映射。
语法
END_INTERFACE_MAP( )
备注
有关接口映射的详细信息,请参阅技术说明 38。
要求
标头:afxwin.h
EVENT_DELEGATE_ENTRY
在委托映射中创建条目。
语法
EVENT_DELEGATE_ENTRY(MEMBER, ARG0, ARG1);
参数
MEMBER
要附加到控件的事件处理程序方法。
ARG0
托管事件处理程序方法的第一个参数,如 Object^
。
ARG1
托管事件处理程序方法的第二个参数,如 EventArgs^
。
备注
委托映射中的每个条目都对应于一个由 MAKE_DELEGATE 创建的托管事件处理程序委托。
示例
以下代码示例显示如何使用 EVENT_DELEGATE_ENTRY 在委托映射中为 OnClick
事件处理程序创建一个条目;另请参阅 MAKE_DELEGATE 中的代码示例。 有关详细信息,请参阅如何:接收来自本机 C++ 类的 Windows 窗体事件。
BEGIN_DELEGATE_MAP(CMyView)
EVENT_DELEGATE_ENTRY(OnClick, System::Object^, System::EventArgs^)
END_DELEGATE_MAP()
要求
标头:msclr\event.h
INTERFACE_PART
用于对象将支持的每个接口的 BEGIN_INTERFACE_MAP 宏和 END_INTERFACE_MAP 宏之间。
语法
INTERFACE_PART( theClass, iid, localClass)
参数
theClass
包含接口映射的类的名称。
iid
要映射到嵌入类的 IID。
localClass
本地类的名称。
备注
它让你能够将 IID 映射到 theClass 和 localClass 指示的类成员。
有关接口映射的详细信息,请参阅技术说明 38。
要求
标头:afxwin.h
MAKE_DELEGATE
将事件处理程序附加到托管控件。
语法
MAKE_DELEGATE( DELEGATE, MEMBER) ;
参数
DELEGATE
托管事件处理程序委托的类型,例如 EventHandler。
MEMBER
要附加到控件的事件处理程序方法的名称。
备注
此宏创建类型为 DELEGATE 且名称为 MEMBER 的托管事件处理程序委托。 托管事件处理程序委托允许本机类处理托管事件。
示例
以下代码示例显示如何调用 MAKE_DELEGATE
以将 OnClick
事件处理程序附加到 MFC 控件 MyControl
。 有关此宏如何在 MFC 应用程序中工作的更详尽说明,请参阅如何:接收来自本机 C++ 类的 Windows 窗体事件。
// CMyView derives from CWinFormsView.
void CMyView::OnInitialUpdate()
{
CWinFormsView::OnInitialUpdate();
GetControl()->Click += MAKE_DELEGATE(System::EventHandler, OnClick);
}
要求
标头:msclr\event.h
另请参阅
如何:接收来自本机 C++ 类的 Windows 窗体事件
如何:向 Windows 窗体控件添加命令传送
宏和全局函数