使用 Windows 功能区框架自定义颜色
Customizing Color with Windows Ribbon Framework
我正在尝试更改基于 Windows 功能区框架的应用程序的功能区颜色。我不是一个C++开发人员,我认为我对 C 的了解充其量是不可靠的。但是,我确实掌握了大部分功能区 XML 标记。
除了自定义功能区 xml 标记之外,我拥有的应用程序代码与以下Microsoft开发教程生成的内容匹配:https://go.microsoft.com/fwlink/p/?linkid=137046,或此处:https://learn.microsoft.com/en-us/windows/win32/windowsribbon/windowsribbon-stepbystep
开发人员指南的大多数示例代码都与链接教程中生成的内容一起使用。此处有关自定义颜色的页面上的代码注释:https://learn.microsoft.com/en-us/windows/win32/windowsribbon/ribbon-color 提到了功能区初始化期间使用的代码示例。我复制了示例代码
CComPtr<IPropertyStore> spPropertyStore;
if (SUCCEEDED(_spFramework->QueryInterface(&spPropertyStore)))
{
...
}
进入
HRESULT InitRibbon(HWND hWindowFrame)
{
...
---customize color---
return S_OK;
}
功能区.cpp文件的功能。
这会产生许多错误,从 "标识符"_spFramework"未定义" 由于我不熟悉C++或 WIN32 开发,我什至不知道从哪里开始解决这个问题。
编辑:根据Mori的评论添加了更多自定义颜色示例代码
你可能想在 SUCCESSED() 函数中添加更多的代码,因为这就是问题所在。
从文档复制:
// _spFramework is a pointer to the IUIFramework interface that is assigned
// when the Ribbon is initialized.
if (SUCCEEDED(_spFramework->QueryInterface(&spPropertyStore)))
{
//some code
}
此示例中的_spFramework是一个变量(或者更具体地说是指向 IUIFramework 接口的指针),显然它在代码中另有命名。
所以问题是:你试图使用一个从未被声明过的变量,C++非法的(更不用说你想访问现有的框架,而不仅仅是任何框架)。
要修复它,您需要在代码中搜索相应变量的声明(它可能看起来像 IUIFramework *correctname)并使用相同的名称。
Mori的回答部分解决了这个问题,教程在功能区.cpp文件中声明"IUIFramework* g_pFramework = NULL;"。
if (SUCCEEDED(_spFramework->QueryInterface(&spPropertyStore)))
{
...
}
应替换为
if (SUCCEEDED(g_pFramework->QueryInterface(&spPropertyStore)))
{
...
}
还抛出了另一个错误,propvarutil.h 需要包含在编译之前。
我知道 C 中指向内存位置的 & 符号约定,但我以前没有在C++中接触过这种下划线约定。我最初尝试用_g_pFramework替换_spFramework,但它无法编译。谢谢你的帮助。
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- C++自定义比较函数
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- 如何正确实现和访问运算符的各种自定义枚举器
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 如何为使用创建窗口创建的窗口创建自定义背景颜色
- 图标编辑器中的自定义颜色 (VS 2015)
- 使用 Windows 功能区框架自定义颜色
- 如何在Qt中创建自定义颜色选择器
- 自定义图形列表视图项目不更改文本颜色
- 进度条委托上的自定义颜色
- 如何为特定的单词(如IDE)设置自定义颜色
- 更改自定义文本C++的颜色
- MFC自定义控制背景/文本颜色
- 如何创建带有自定义颜色的中文和日文字符的标签
- Windows 10上本机C++应用程序的自定义标题栏颜色
- 如何获取标题栏窗口控件的 RECT(最大化、最小化、关闭按钮)?我尝试制作自定义颜色标题栏
- 如何在QTextEdit中设置自定义文本颜色