SetItemIcon() 在 Mac 10.13 上停止工作,有什么替代方案
SetItemIcon() stopped working on Mac 10.13, what is the alternative?
SetItemIcon()
用于为菜单项设置图标的Carbon API函数显然已停止在macOS 10.13 High Sierra上运行。我的意思是它现在显示一堆扭曲的像素而不是实际的图标。从 10.0 到 10.12 它工作正常。函数在 Menus.h 中定义
/*
* SetItemIcon()
*
* Mac OS X threading:
* Not thread safe
*
* Availability:
* Mac OS X: in version 10.0 and later in Carbon.framework
* CarbonLib: in CarbonLib 1.0 and later
* Non-Carbon CFM: in InterfaceLib 7.1 and later
*/
extern void
SetItemIcon(
MenuRef theMenu,
MenuItemIndex item,
short iconIndex) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
并像这样在代码中使用:
SetItemIcon((MenuHandle)hMenu, uItem+1, hbmp-256);
并且是使用 XCode 版本 3.2.5 构建的。
有没有办法修复或解决此问题?
附言图标以一些古老的奇怪的十六进制文本格式存储在.r资源文件中:
resource 'ICON' (300) {
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0F00"
$"0000 FE00 000F FC00 00FF F800 03FF FF80"
$"00FF F800 000F FC00 0000 FE00 0000 0F"
};
使用
SetItemIcon()
的一个可行的替代方法是使用 SetMenuItemIconHandle()
,它在 10.13 上仍然可以正常工作。
SetMenuItemIconHandle((MenuHandle)hMenu, uItem+1, kMenuIconResourceType, (Handle) CFSTR("myicon.icns"));
图标需要从十六进制文本格式转换为.icns文件,并添加到项目和应用程序包中。
相关文章:
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- C++集<T> 什么是最合适的解决方案?
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 此解决方案中生成更改的方法数量(自上而下)有什么问题?
- gcc中cl/NODEFAULTLIB的替代方案是什么
- 在这种情况下,我们可以使用静态而不是朋友吗,还有其他解决方案是什么
- 模板重载解决方案:当多个模板匹配时会发生什么?
- Windows(Visual Studio)中的-fpermssive标志的替代方案是什么
- 什么是"使用命名空间 std;"的好替代方案?
- 什么是最快的解决方案,用于读/写入哈希映射
- COM 客户端连接 COM 服务器所需的文件是什么(进程外方案)
- SetItemIcon() 在 Mac 10.13 上停止工作,有什么替代方案
- 构建C 插件时的错误,该解决方案是什么
- 当涉及到快速删除时,C++矢量的替代方案是什么
- 我的构建二叉树解决方案有什么问题?
- 从QTcpSocket上的数据流中连续运行复杂算法的最佳Qt线程解决方案是什么
- 为什么C++std::set没有"at"功能,什么是内联替代方案
- 正在(在构造函数中)将其包含一个不良设计的指针传递,如果是的,则解决方案是什么
- Qt 创建者,跟踪:不允许操作.什么是永久解决方案