我目前正在使用 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/