我有Fl_Choice
几个选项,例如:
Fl_Choice* o = new Fl_Choice(70, 100, 240, 25, "Some Options:");
o->add("Blue");
o->add("Black");
o->add("Orange");
o->add("Purple");
我确实想为每件商品的背景设置自定义颜色,同时将前景色留白。
如何为每件商品设置自定义背景?
注意:我使用的是v90,不确定我应该使用哪个标签,或者如果vs2008足够,请将此说明删除,如果它足够,或者删除我应该添加的其他标签的评论。
答案 0 :(得分:0)
设置背景颜色不是那么容易,但可以设置前景色
Fl_Menu_Item choices[] =
{
// ,-- The colour
{"red",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0xFF000000},
{"blue",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0x0000FF00},
{"green",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0x00FF0000},
{"yellow",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0xFFFF0000},
{0}
};
...
Fl_Choice *c = new Fl_Choice(50,250,200,25);
c->menu(choices);
或者,如果您不想要这么多零,可以从Fl_Choice派生
class ColourChoice: public Fl_Choice
{
public:
ColourChoice(int x, int y, int w, int h, const char* l = 0)
: Fl_Choice(x, y, w, h, l)
{
}
void add(const char* text, Fl_Color color)
{
Fl_Choice::add(text);
Fl_Menu_Item* item = const_cast<Fl_Menu_Item*>(find_item(text));
item->labelcolor(color);
}
};
...
ColourChoice* c = new ColourChoice(...);
c->add("purple", (Fl_Color)0xFF00FF00);