分类: C/C++
2008-08-26 23:15:00
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.
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.
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.
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.
long GetColor(); long GetGradientColor(); long GetTextColor(); long GetEdge();These functions will get you the current values.
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, it's 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.
3 Apr 2002 - updated downloads.