Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 29/08/2013 at 06:25, xxxxxxxx wrote:
User Information: Cinema 4D Version: R12-R15 Platform: Windows ; Mac ; Mac OSX ; Language(s) :
--------- Hi folks, I wonder how to implement tooltips as it's done in the BitmapButtonCustomGui. It would be nice if I could do something similiar to display descriptions of selected items in our browser plugin (basically a big user area in which we draw rectangular items). Is this even possible without using OS functions? Thanks in advance, Satara
On 29/08/2013 at 08:11, xxxxxxxx wrote:
I think it is not the way its done by c4d, but you could use a dialog (as they already used for almost everything). DLG_TYPE_ASYNC_POPUPEDIT will open a dialog without a menu bar and a window frame.
On 29/08/2013 at 08:23, xxxxxxxx wrote:
BFM_GETCURSORINFO is sent to GeDialog::Message(). I didn't try it myself, but among the documentation, you can define a tooltip text at any position for any element at any time.
> #### BFM_GETCURSORINFO_<_h4_>_ > > You can respond this message if you want to display any helpinformations in the bubblehelp or global statusbar.
On 30/08/2013 at 00:22, xxxxxxxx wrote:
Thanks for the fast replies! I think using BFM_GETCURSORINFO would be the cleaner way and it seemed to be very promising, but I couldn't make it work
This is how I have tried it:
LONG ImageArea::Message(const BaseContainer& msg, BaseContainer& result) { if (msg.GetId() == BFM_GETCURSORINFO) { LONG mx = msg.GetLong(BFM_DRAG_SCREENX); LONG my = msg.GetLong(BFM_DRAG_SCREENY); ... if (m_highlightedItem != NOTOK) { result.SetBool(RESULT_SUPPRESSBUBBLE, FALSE); // already FALSE result.SetString(RESULT_BUBBLEHELP_TITLE, "bubble help title"); result.SetString(RESULT_BUBBLEHELP, "-- Here should be the description --"); result.SetString(RESULT_HELP1, "Test1"); result.SetString(RESULT_HELP2, "Test2"); result.SetString(RESULT_HELP3, "Test3"); result.SetString(RESULT_HELP4, "Test4"); } } return GeUserArea::Message(msg, result); }
Also found this related topic, with the same problem, but no solution: Dialog BubbleHelp?
On 30/08/2013 at 04:11, xxxxxxxx wrote:
Same here. But this works
virtual Bool Message(const BaseContainer& msg, BaseContainer& result) { switch (msg.GetId()) { case BFM_GETCURSORINFO: { **result.SetId(BFM_GETCURSORINFO);** result.SetLong(RESULT_CURSOR, MOUSE_BUSY); result.SetBool(RESULT_SUPPRESSBUBBLE, FALSE); result.SetString(RESULT_BUBBLEHELP_TITLE, "Bubble Help Title"); result.SetString(RESULT_BUBBLEHELP, "Cool description stuff here."); result.SetString(RESULT_HELP1, "RESULT_HELP1"); result.SetString(RESULT_HELP2, "RESULT_HELP2"); result.SetString(RESULT_HELP3, "RESULT_HELP3"); result.SetString(RESULT_HELP4, "RESULT_HELP4"); break; } } return super::Message(msg, result); }
This is nowhere documented, but it was an idea and I gave it a shot. And now it works! You have to set the ID of the result container to BFM_GETCURSORINFO.
Edit: Removed print line, it was a left over of stripping the code.
On 30/08/2013 at 04:21, xxxxxxxx wrote:
Woow awesome Can't believe that it's working Thx mate!