Hey @mogh,
Thank you for reaching out to us. You posted in General Talk and the language in your mail also implies that you consider this to be out of scope of support. But unless I am mistaken, you are talking here about buttons inside a GeDialog
or a Description
. Which is why I have moved this into Cinema 4D SDK.
The first thread you are linking to, does not talk about tooltips, but about mouse-over events. A related but not identical topic.
You can have tooltips for bitmap buttons. I made use of this for example in the Asset API examples.
Bool AssetApiExamplesDialog::CreateLayout()
{
if (!GroupBeginInMenuLine())
return false;
GroupSpace(3, 0);
GroupBorderSpace(2, 3, 2, 0);
// Add a clear console button.
BaseContainer bc = BaseContainer();
bc.SetBool(BITMAPBUTTON_BUTTON, true);
bc.SetInt32(BITMAPBUTTON_FORCE_SIZE, 18);
bc.SetBool(BITMAPBUTTON_TOGGLE, true);
bc.SetString(BITMAPBUTTON_TOOLTIP, "Help text"_s); // Sets the tooltip text of the button.
AddCustomGui(ID_BTN_OPEN_HANDBOOK, CUSTOMGUI_BITMAPBUTTON, ""_s, BFV_CENTER, 0, 0, bc));
// ...
This then either requires using an icon for the button or rendering its text as a bitmap to display it as the 'icon'. There is also an undocumented and only recently added way to write the tooltip of GeDialog.AddButton
:
import c4d
class TooltipButtonDialog(c4d.gui.GeDialog):
"""Realizes a dialog with buttons with a tooltip.
"""
def CreateLayout(self):
"""Adds two buttons with a tooltip.
"""
self.SetTitle("TooltipButtonDialog")
# The help string is embedded in the label of the button, following the syntax:
# "{label-string}&${help-string}"
self.AddButton(1000, c4d.BFH_SCALE | c4d.BFV_SCALE | c4d.BFV_CENTER, name='Button1&$Help1')
self.AddButton(1001, c4d.BFH_SCALE | c4d.BFV_SCALE | c4d.BFV_CENTER, name='Button2&$Help2')
return True
dlg: TooltipButtonDialog = TooltipButtonDialog()
dlg.Open(c4d.DLG_TYPE_ASYNC, 0, defaultw=300, default=200)

Cheers,
Ferdinand
PS: I have added information about the currently undocumented GeDialog.AddButton
tooltip mechanism.