Macos 如何在OSX中为lazarus应用程序添加dock图标徽章和弹出菜单支持?
我试过用谷歌搜索abit,但在OSX上使用dock图标的徽章功能以及访问dock图标菜单方面找不到任何帮助?我想我可以在跑步过程中更改停靠图标,以指示有什么事情发生了,但它没有那么光滑;) 此功能未在LCL中实现,因此如果要使用它,必须直接使用相关的Cocoa框架。您可以使用ObjPas来实现这一点。当然,如果您准备编写LCL实现,这将是一个更好的长期解决方案,因为它可以在以后的Windows/Gnome上使用。此功能不在LCL中实现,因此如果您想使用它,您必须直接使用相关的Cocoa框架。您可以使用ObjPas来实现这一点。当然,如果您准备编写LCL实现,这将是一个更好的长期解决方案,因为它可以在以后在Windows/Gnome上工作。太晚了。。。但我无意中发现了这篇文章,并在Lazarus论坛上找到了这篇文章,它展示了如何在应用程序运行时更改dock中的应用程序图标 希望它能对那些正在寻找同一问题答案的人有所帮助,即使是在发布原始问题多年之后。(如果不合适,请道歉)Macos 如何在OSX中为lazarus应用程序添加dock图标徽章和弹出菜单支持?,macos,freepascal,lazarus,Macos,Freepascal,Lazarus,我试过用谷歌搜索abit,但在OSX上使用dock图标的徽章功能以及访问dock图标菜单方面找不到任何帮助?我想我可以在跑步过程中更改停靠图标,以指示有什么事情发生了,但它没有那么光滑;) 此功能未在LCL中实现,因此如果要使用它,必须直接使用相关的Cocoa框架。您可以使用ObjPas来实现这一点。当然,如果您准备编写LCL实现,这将是一个更好的长期解决方案,因为它可以在以后的Windows/Gnome上使用。此功能不在LCL中实现,因此如果您想使用它,您必须直接使用相关的Cocoa框架。您可
可笑的迟到。。。但我无意中发现了这篇文章,并在Lazarus论坛上找到了这篇文章,它展示了如何在应用程序运行时更改dock中的应用程序图标 希望它能对那些正在寻找同一问题答案的人有所帮助,即使是在发布原始问题多年之后。(如果不合适,请道歉)
uses
... MacOSAll ...
procedure TFrm_Main.FormCreate(Sender: TObject);
begin
...
FResPath := TrimFilename(ExtractFilePath(Application.ExeName) + PathDelim + 'Resource');
...
end;
procedure TFrm_Main.SomeEventWhenOverlay(SomeVar: Integer);
var
temp_ImagePath: String;
temp_CGDataProvider: CGDataProviderRef;
temp_Float32Ptr: Float32Ptr;
temp_CGImage: CGImageRef;
temp_CGContext: CGContextRef;
begin
temp_ImagePath := TrimFilename(FResPath + PathDelim + 'Image' + PathDelim + 'overlay_image.png'); // image must be same size as icon, if not, will be deformed
if (FileExists(temp_ImagePath)) then
begin
temp_CGDataProvider := CGDataProviderCreateWithFilename(PChar(temp_ImagePath));
temp_Float32Ptr := nil;
temp_CGImage := CGImageCreateWithPNGDataProvider(temp_CGDataProvider, temp_Float32Ptr, 1, kCGRenderingIntentDefault);
CGDataProviderRelease(temp_CGDataProvider);
// Draw image
temp_CGContext := BeginCGContextForApplicationDockTile;
//SetApplicationDockTileImage(temp_CGImage);
OverlayApplicationDockTileImage(temp_CGImage);
CGImageRelease(temp_CGImage);
EndCGContextForApplicationDockTile(temp_CGContext);
end;
end;
procedure TFrm_Main.SomeOtherEventWhenRestore();
begin
//This will not work if you use SetApplicationDockTileImage
RestoreApplicationDockTileImage;
end;