如何在 Win32 窗口中实现 MFC 资源?

Posted

技术标签:

【中文标题】如何在 Win32 窗口中实现 MFC 资源?【英文标题】:How can I implement a MFC resource within a Win32 window? 【发布时间】:2018-03-21 02:19:44 【问题描述】:

我有两个项目,一个使用 Win32 API 的旧项目,它有一个使用 Win32 图形的旧工具栏,另一个使用具有更好图形的 MFC 代码(我正在创建一个类似于 Microsoft Office 使用的功能区工具栏)。我使用的 MFC 类继承自 CDialogEx 和 CWinApp。

我要做的是将功能区工具栏放在我的 Win32 窗口中并替换旧的。我已经将 MFC 项目用作静态库来引用它,并且可以从我的 Win32 项目中调用这些类,但我还不能显示新的工具栏。

我需要做什么才能实现这一目标?

【问题讨论】:

【参考方案1】:

使用 MFC 创建框架并将旧代码移动到新框架中可能会容易得多。

可以在没有 Doc/View 架构的情况下创建 MFC 项目。

MFC 功能区将并且只能存在于作为 CWinAppEx 一部分的 CMFCFrameWnd 中...仅将功能区代码提取到普通 Win32 应用程序中应该会失败。

但也有Win32 Ribbon Framework。在旧的 Win32 项目中实现这一点可能会容易得多。

描述了如何实现这一点here。

在 Codeproject 中你可以找到sample 的使用方法。

【讨论】:

感谢您的回答!问题是我的 Win32 项目中有 1000 行代码,其中包含一些复杂的 GUI 和 C++ 依赖项,所以我想保持不变。我之前已经尝试过您建议的工具,但我无法完全自定义它(特别是功能区工具栏选项卡,无法添加图标,只能添加文本)。因此,我使用了一种名为 Exontrol 的许可产品,它可以让您做到这一点,并且还可以使用 MFC。我基本上只需要在我现有的 Win32 窗口中放置一个工具栏,所以我想知道是否有办法。 参见 Codeproject 文章。也可以添加图标! 是的,可以在标签组中添加图标。但是除了文本之外,我还需要将图标添加到选项卡本身,这是使用框架无法实现的。

以上是关于如何在 Win32 窗口中实现 MFC 资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MFC 创建全屏窗口?

VS下,在win32中实现trace功能

如何本地化 win32(非 MFC)DLL

如何在 mfc CListCtrl 中实现简单的复制/粘贴功能?

如何在 MFC CListCtrl 中实现“点击并按住”行为?

WinUI3如何在桌面应用中实现亚克力窗口效果?