可以使用现有API将Windows功能区控件修改为更像MS Word 2010中的功能区

时间:2015-02-17 19:41:09

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

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

此功能区当前显示为MS Paint中的功能区。 (抱歉,我无法发布图片)。

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

我想要改变的更改是:

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

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

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

4)更改功能区最左侧的蓝色按钮,使其具有 单词“文件”就可以了

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

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

1 个答案:

答案 0 :(得分:1)

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

Office Ribbon(在Office 2007中引入)和Windows Ribbon Framework(在Windows 7中引入)是Ribbon概念的两种完全不同的实现。微软还有更多的Ribbon实现,参见WPF Ribbons和MFC Ribbon,它们都提供了不同的功能和不同的外观。

虽然Windows Ribbon Framework和WPF Ribbons可以在您自己的桌面应用程序中轻松使用,但您无法在Office应用程序中使用本机Office Ribbons。如果你真的想要一个功能区栏,它在你的C ++桌面应用程序中提供了Office Ribbons的外观效果,那么你要么必须编写自己的实现,要么使用第三方组件。