#Menu TITLE color probs
8 messages in this thread
As best I can tell, the following apply to your problem:
1. The text used for the menu titles are rendered using the screen's
default font. 2. The titles color is is the window's blockpen. 3. All titles
are 'activated' using complement of the select box.
By adjusting combinations of these three, you should be able to make your
menu strip more pleasant.
Tim
Tim,
So what you are saying is that I cannot DIRECTLY and INDEPENTLY set the
menu title colors/complements, right?
You do have this option. Place MENUVERIFY in your IDCMPFlags. Then before
menuing, Intuition will tell you that menuing is about to occur. Before
Replying() to the message, change the screen colormap to more acceptable
colors. Works real nice.
Tim,
After I get the MENUVERIFY, I use LoadRGB4 or SetRGB4 to change the
relevant colors. Now do I execute code relevant to MENUPICK, then ReplyMsg(),
vice versa, or just ReplyMsg() and then wait for the MENUPICK?
Thanks,
PM
Since you don't have any MENUPICK information at this point it would be
impossible to execute. You ReplyMsg() to the MENUVERIFY message then wait
until the MENUPICK comes along…..you then process ALL of the linked
MenuNumbers and put the colors back the way they were.
The MENUVERIFY will come before the MENUPICK. Intuition sends MENUVERIFY when
the Right Button is depressed. It sends the MENUPICK when the Right Button is
released. Note that you will ALWAYS receive a MENUPICK, even if no item is
selected.
So, yes you do the LoadRGB4(),SetRGB4() when the MENUVERIFY is received. You
should do the prior to ReplyMsg() of the MENUVERIFY. You then reset the colors
when you receive the subsequent MENUPICK.
Do you have any code showing this? Pseudo code would be fine…
Try this: (Modula-2 like code)
CASE IDCMP.Class OF
MenuVerify: SetNewColors(IDCMP.Window); (* Set colors for window about to
menu *)
ReplyMsg(IDCMP.Message);
MenuPick: ResetColors(IDCMP.Window); (* Reset colors for window *);
ProcessMenuing(IDCMP.Code); (* Do menu logic*)
ReplyMsg(IDCMP.Message);
ELSE
END;