c++ - 是否可以使用现有 API 将 Windows 功能区控件修改为看起来更像 MS Word 2010 中的功能区

标签 c++ winapi com windows-ribbon-framework

我目前正在使用 C++ 和 WINAPI 开发桌面应用程序。我想为应用程序的主窗口使用功能区控件(就像在较新的办公应用程序中找到的那种)。我已成功创建 XML 文件和 COM 接口(interface),并且还设法让功能区显示在应用程序窗口中。

功能区目前看起来像 MS Paint 中的功能区。 (对不起,我不能发布图片)。

我一直在尝试自定义功能区,使其看起来更像 MS Word 2010 中的功能区。

我试图准确的改变是:

1) 应用标题在标题栏中居中

2) 使标题栏淡出\合并到功能区中(与窗口框架的边框相对,在标题栏和功能区之间画一条线)

3) 将“自定义快速访问栏”菜单移动到垂直分隔符的右侧。

4) 更改功能区最左侧的蓝色按钮,使其具有 上面写着"file"

我基本上没有成功,因为功能区似乎无法使用 Microsoft 提供的接口(interface)和 API 以这种方式自定义。

因此,我的问题是:是否有一种方法可以使用现有的功能区 API 创建上述效果,或者 MS Office 功能区是未记录的功能或什至可能是大量黑客攻击(枚举窗口句柄和违反边界)的结果界面)。

最佳答案

您将无法按照 Office 功能区的外观和行为方式自定义 Windows 功能区框架。甚至没有像 Windows Ribbon for WinForms 这样的包装项目(.NET) 或 Windows Ribbon Framework for Delphi提供这样的功能。

Office Ribbon (与 Office 2007 一起引入)和 Windows Ribbon Framework (在 Windows 7 中引入)是 Ribbon 概念的两种完全不同的实现。 Microsoft 提供了更多的 Ribbon 实现,请参阅 WPF Ribbons 和 MFC Ribbons,它们都提供不同的功能和不同的外观。

虽然 Windows 功能区框架和 WPF 功能区可以在您自己的桌面应用程序中非常轻松地使用,但您不能在 Office 应用程序之外使用 native Office 功能区。如果您真的想要在您的 C++ 桌面应用程序中拥有一个提供 Office 功能区外观的功能区栏,您将不得不编写自己的实现或使用第三方组件。

关于c++ - 是否可以使用现有 API 将 Windows 功能区控件修改为看起来更像 MS Word 2010 中的功能区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28569771/

相关文章:

c++ - 无法实现接口(interface)的 [[deprecated]] 方法

wpf - WPF是否支持本地读取/写入WMF/EMF文件?

c - 是否可以在没有消息循环的情况下运行窗口应用程序

c++ - 如何更改 AfxMessageBox 中的语言?

.net - 从 x64 .NET 访问 x86 COM

c++ - COM dll注销问题

c++ - 这些链接器错误的含义是什么?

c++ - 在 Linux 中阻塞 I/O 调用

c++ - 基于范围的多维数组自动循环作为函数参数

windows - 如何调试regsvr32编译后DLL注册异常?