Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;生成器更改主菜单背景色_C++_Menu_Background Color_C++builder - Fatal编程技术网

C++ C++;生成器更改主菜单背景色

C++ C++;生成器更改主菜单背景色,c++,menu,background-color,c++builder,C++,Menu,Background Color,C++builder,下面的脚本演示了如何更改主菜单项的背景色,而菜单的其余部分仍然保持灰色 void __fastcall TForm1::AdvancedDrawNewItemMain(TObject *Sender, TCanvas *ACanvas, const TRect &ARect, TOwnerDrawState State) { TMenuItem *MenuItem = ((TMenuItem*)Sender); TRect TempRctN = A

下面的脚本演示了如何更改主菜单项的背景色,而菜单的其余部分仍然保持灰色

 void __fastcall TForm1::AdvancedDrawNewItemMain(TObject *Sender, TCanvas *ACanvas,    const TRect &ARect,
      TOwnerDrawState State)
{

    TMenuItem *MenuItem = ((TMenuItem*)Sender);
    TRect  TempRctN = ARect;
    TempRectN.top=TempRctN.top+2;
    ACanvas->Brush->Color =clRed;
    ACanvas->FillRect(ARect);


    DrawTextW(ACanvas->Handle,MenuItem->Caption.w_str(),MenuItem->Caption.Length(),&TempRctN, DT_CENTER);


  if((State.Contains(odSelected) || State.Contains(odHotLight) ) && !State.Contains(odDisabled) )
  {
   ACanvas->Brush->Color =static_cast<TColor>RGB(49,106,197);
   ACanvas->FillRect(ARect);
   ACanvas->Font->Color=clWhite;
   DrawTextW(ACanvas->Handle,MenuItem->Caption.w_str(),MenuItem->Caption.Length(),&TempRctN, DT_CENTER);
  }

}
void\uu fastcall TForm1::AdvancedDrawNewItemMain(TObject*Sender、tcavas*acavas、const TRect&ARect、,
城镇居民(州)
{
TMenuItem*菜单项=((TMenuItem*)发送方);
TRect TempRctN=ARect;
TempRectN.top=TempRctN.top+2;
ACanvas->画笔->颜色=clRed;
ACanvas->FillRect(ARect);
DrawTextW(ACanvas->Handle,MenuItem->Caption.w_str(),MenuItem->Caption.Length(),&TempRctN,DT_CENTER);
if((State.Contains(odSelected)| | State.Contains(odHotLight))&&!State.Contains(odDisabled))
{
ACanvas->画笔->颜色=静态(49106197);
ACanvas->FillRect(ARect);
ACanvas->Font->Color=clWhite;
DrawTextW(ACanvas->Handle,MenuItem->Caption.w_str(),MenuItem->Caption.Length(),&TempRctN,DT_CENTER);
}
}

有人知道如何更改整个主菜单的背景色吗?

操作系统不支持您的要求。标准的
TMainMenu
只能绘制单个项目,而不能绘制整个菜单。如果您想自定义整个菜单,则必须使用不同的组件,例如查找支持您所需内容的第三方自定义菜单实现。

Remy,非常感谢您的回答。你能指出我用哪个组件解决这个问题吗?