Introduction
I wanted to put a title on top of some popup menus, but I didn't like to use DISABLED|STRING
as flags for a menu-item, as this doesn't prevent the mouse-over selection, and doesn't look nice. So I checked around and found CTMenu
by Per Fikse on Code Guru, which I then build upon, to get what I wanted.
CTitleMenu
is pretty simple to use. Include the source-files in your project, and where you use CMenu
, use CTitleMenu
instead. And don't forget to #include "TitleMenu.h"
ofcourse.
Functions
void AddMenuTitle(LPCTSTR lpszTitle);
This puts a MenuItem
on first menu position, with the caption lpszTitle
. If you don't use this, the menu will look just like a normal menu.
void SetColor(long cl) {clLeft=cl;};
This sets the background color, or left-side color in a gradient background.
Default: Standard Windows Active Caption color
void SetGradientColor(long cl);
This sets the right-side color in a gradient background. If this color is the same as the set background color, obviously no gradient will be drawn either.
NOTE: I'm loading the GradientFill function dynamically from msimg32.dll. If this load fails, for whatever reason, no gradient fill will be performed, but no crash should occur either.
Default: Standard Windows Gradient Active Caption color
void SetTextColor(long cl);
This sets the text color of the title.
Default: Standard Windows Captiontext color
void SetEdge(bool shown,UINT remove=0,UINT add=0);
This sets the visibility and style of the edge around the title. For an overview of the flag values, see ::DrawEdge
help.
Default: no border (shown=false
), and style BDR_SUNKENINNER
long GetColor();
long GetGradientColor();
long GetTextColor();
long GetEdge();
These functions will get you the current values.
Example
CTitleMenu menu1;
menu1.CreatePopupMenu();
menu1.AddMenuTitle("Power Channels");
menu1.AppendMenu(MF_STRING | MF_ENABLED | MF_CHECKED, 20, "Right Peltier");
menu1.AppendMenu(MF_STRING | MF_ENABLED | MF_CHECKED, 20, "Left Peltier");
...
I haven't tested this very thoroughly, but the code isn't that complex. I didn't encounter any problems with it, so far. There is enough that could be improved upon, like bitmap background, its own gradient-function, and more, but then I would have to write a much bigger article. ^_^
Still, if you'd like to see a feature in it, or have expanded upon it yourself, leave a reply.
History
- 3rd April, 2002 - Updated downloads
License
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt, please contact the author via the discussion board below.
A list of licenses authors might use can be found here.