Windows 窗体/MFC 编程差异
在 MFC 中使用 Windows 窗体用户控件中的主题介绍了对 Windows 窗体 的 MFC 支持。 如果你不熟悉 .NET Framework 或 MFC 编程,请注意,本主题提供有关两者之间的编程差异的背景信息。
Windows 窗体用于在 .NET Framework 上创建 Microsoft Windows 应用程序。 此框架提供了一组面向对象的新式可扩展类,使你能够开发基于 Windows 的丰富应用程序。 借助 Windows 窗体,你可以创建一个富客户端应用程序,该应用程序可以访问各种数据源,并使用 Windows 窗体控件提供数据显示和数据编辑设施。
但是,如果你习惯 MFC,则可能习惯于创建 Windows 窗体尚不显性支持的某些类型的应用程序。 Windows 窗体应用程序等效于 MFC 对话框应用程序。 但是,它们不提供基础结构来直接支持其他 MFC 应用程序类型,例如 OLE 文档服务器/容器;ActiveX 文档;对单文档界面 (SDI)、多文档界面 (MDI) 和多顶级界面 (MTI) 的文档/视图支持。 可以编写自己的逻辑来创建这些应用程序。
有关 Windows 窗体应用程序的详细信息,请参阅 Windows 窗体简介。
以下 MFC 视图或文档和命令路由功能在 Windows 窗体中没有等效项:
Shell 集成
MFC 处理动态数据交换 (DDE) 命令和命令行参数,在你右键单击文档并选择“打开”、“编辑”或“打印”等谓词时供 shell 使用。 Windows 窗体没有 shell 集成,不响应 shell 谓词。
文档模板
在 MFC 中,文档模板将视图(包含在采用 MDI、SDI 或 MTI 模式的框架窗口中)与打开的文档相关联。 Windows 窗体没有文档模板的等效项。
文档
从 shell 打开文档时,MFC 会注册文档文件类型并处理文档类型。 Windows 窗体没有文档支持。
文档状态
MFC 保留文档的脏状态。 因此,当你关闭应用程序、关闭包含应用程序的最后一个视图或退出 Windows 时,MFC 会提示你保存文档。 Windows 窗体没有等效的支持。
命令
MFC 有命令概念。 菜单栏、工具栏和上下文菜单都可以调用相同的命令,例如剪切和复制。 在 Windows 窗体中,命令是特定 UI 元素(例如菜单项)中的紧密绑定事件;因此,必须显式挂接所有命令事件。 你还可以使用 Windows 窗体中的单个处理程序处理多个事件。 有关详细信息,请参阅将多个事件连接到 Windows 窗体中的单个事件处理程序。
命令路由
MFC 命令路由使活动视图或文档能够处理命令。 由于同一命令的含义通常因视图而异(例如,复制在文本编辑视图中的行为不同于在图形编辑器中的行为),因此需要由活动视图处理命令。 由于 Windows 窗体菜单和工具栏对活动视图没有固有的理解,因此,在不编写其他内部代码的情况下,你不能对 MenuItem.Click 事件的每个视图类型使用不同的处理程序。
命令更新机制
MFC 有命令更新机制。 因此,活动视图或文档负责 UI 元素的状态(例如启用或禁用菜单项或工具按钮,以及选中状态)。 Windows 窗体没有命令更新机制的等效项。