Yes, besides using the built-in icons of MapInfo Pro you can also reference your own custom icons, either as individual image files or inside a .NET assembly.
MapInfo Built-in icons
In the ConnectTheDots sample application I showed how to use built-in icons:
Call SetRbnBtnCtrlSmallIcon(mtsBtnTool, New_Uri("pack://application:,,,/MapInfo.StyleResources;component/Images/Spatial/segmenting_16x16.png", 0))
I have highlighted the specific part of the statemen that is specific to using built-in icons
Image files
Image files can be references in a very similar way where you basically replace the pack string with the file path to the image file:
Call SetRbnBtnCtrlSmallIcon(mtsBtnTool, New_Uri(ApplicationDirectory$() & "Images\ & "MapWindowExcel_32.png", 0))
You can use ApplicationDirectory$() to point at the current location of the application if that's where the images are located:
Resources in a .NET assembly
For a custom .NET assembly with icon resources, you need to modfify the Pack string to use addinorigon and specify the full path to the assembly and the name of the resoruce in the assembly
Call SetRbnBtnCtrlSmallIcon(mtsBtnTool, New_Uri("pack://addinorigin:,,,/D:/folder/CustomResource.dll;component/Images/testImage.png", 0))
Classic MapInfo Pro 32 bit icons
For v17.0 we will also support the classic icons that you might remember from the 32 bit versions of MapInfo Pro.
You will be able to use the icon constants from Icons.def as part of the reference to these icons.