0

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

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

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

我试图准确的变化是:

1)在标题栏中居中应用程序的标题

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

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

4)更改功能区最左侧的蓝色按钮,使其上有“文件”一词

我在很大程度上没有成功,因为功能区似乎无法使用 Microsoft 公开的接口和 API 以这种方式进行自定义。

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

4

1 回答 1

1

您将无法自定义 Windows 功能区框架,使其外观和行为类似于 Office 功能区。甚至诸如Windows Ribbon for WinForms (.NET) 或Windows Ribbon Framework for Delphi之类的包装器项目也没有提供这样的功能。

Office 功能区(随 Office 2007 引入)和Windows 功能区框架(随 Windows 7 引入)是功能区概念的两个完全不同的实现。Microsoft 提供了更多功能区实现,请参阅 WPF 功能区和 MFC 功能区,它们都提供不同的功能和不同的外观。

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

于 2015-02-18T07:22:58.110 回答