Cómo quitar el borde del menú emergente en MFC.
Tengo una clase personalizada que hereda de la clase CMenu
. Estoy intentando cambiar el color de fondo de los elementos del menú. Pero el borde de los elementos del menú sigue sin cambios. A continuación se muestran mis funciones anuladas:
void CNewMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight = 100;
lpMeasureItemStruct->itemWidth = 150;
}
void CNewMenu::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CRect rectFull(lpDrawItemStruct->rcItem);
COLORREF TextRect = COLORREF(RGB(0, 0, 0));
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->FillSolidRect(&rectFull, TextRect);
pDC->TextOut(rectFull.left, rectFull.top, ((MenuObject*)lpDrawItemStruct->itemData)->m_strCaption);
}
¿Cómo puedo eliminar el borde o cambiar el color del borde?
Me refiero al borde gris alrededor del menú emergente.
davy.ai
Para eliminar el borde o cambiar el color del borde, puede agregar el siguiente código a la función
DrawItem
:Este código elimina el tamaño del borde del rectángulo del elemento y luego dibuja un marco de color rojo alrededor del rectángulo del elemento utilizando la función
FrameRect
. Puede reemplazarRGB(255, 0, 0)
con el color que desee que tenga el borde.