是否可以使用现有 API 修改 Windows 功能区控件以使其看起来更像 MS Word 2010 中的功能区
Posted
技术标签:
【中文标题】是否可以使用现有 API 修改 Windows 功能区控件以使其看起来更像 MS Word 2010 中的功能区【英文标题】:Can the windows ribbon control be modified to look more like the ribbon in MS Word 2010 using the existing APIs 【发布时间】:2015-02-17 19:41:09 【问题描述】:我目前正在使用 C++ 和 WINAPI 开发桌面应用程序。我想为应用程序的主窗口使用功能区控件(就像在较新的办公应用程序中找到的那种)。我已经成功创建了 XML 文件、COM 接口,并且我还设法让功能区显示在应用程序窗口中。
功能区当前看起来像 MS Paint 中的功能区。 (抱歉,我无法发布图片)。
我一直在尝试自定义功能区,使其看起来更像 MS Word 2010 中的功能区。
我想要确定的更改是:
1) 应用程序的标题在标题栏中居中
2) 让标题栏淡入\合并到功能区中(与窗口框架的边框相对,在标题栏和功能区之间画一条线)
3) 将“自定义快速访问栏”菜单移动到垂直分隔符的右侧。
4) 更改功能区最左侧的蓝色按钮,使其具有 上面写着“文件”
我基本上没有成功,因为功能区似乎无法使用 Microsoft 公开的接口和 API 以这种方式进行自定义。
因此,我的问题是:有没有一种方法可以使用现有的功能区 API 创建上述效果,或者 MS Office 功能区是否是未记录的功能甚至可能是大量黑客攻击的结果(枚举窗口句柄并违反边界界面)。
【问题讨论】:
您是否已经尝试过?它奏效了吗?如果没有,究竟是什么不起作用?否则你的问题太宽泛了。 MS Office 不使用标准功能区。他们从头开始编写自己的代码。 【参考方案1】:您将无法自定义 Windows 功能区框架,使其外观和行为类似于 Office 功能区。甚至像 Windows Ribbon for WinForms (.NET) 或 Windows Ribbon Framework for Delphi 这样的包装项目也没有提供这样的功能。
Office Ribbon(随 Office 2007 引入)和Windows Ribbon Framework(随 Windows 7 引入)是功能区概念的两个完全不同的实现。还有更多来自 Microsoft 的 Ribbon 实现,请参阅 WPF Ribbons 和 MFC Ribbons,它们都提供不同的功能和不同的外观。
虽然 Windows 功能区框架和 WPF 功能区可以在您自己的桌面应用程序中轻松使用,但您不能在 Office 应用程序之外使用本机 Office 功能区。如果您真的想要在您的 C++ 桌面应用程序中拥有一个提供 Office 功能区外观的功能区栏,您要么必须编写自己的实现,要么使用第三方组件。
【讨论】:
以上是关于是否可以使用现有 API 修改 Windows 功能区控件以使其看起来更像 MS Word 2010 中的功能区的主要内容,如果未能解决你的问题,请参考以下文章
是否有一个模块可以在 python 中用作 FindWindow API