共用方式為


CMenu::DrawItem

呼叫由架構,會在建立主控描繪 (Owner-Drawn) 功能表的視覺外觀變更。

virtual void DrawItem(
   LPDRAWITEMSTRUCT lpDrawItemStruct 
);

參數

  • lpDrawItemStruct
    out 包含針對需要的繪圖的資訊的 DRAWITEMSTRUCT 結構的指標。

備註

DRAWITEMSTRUCT 結構的 itemAction 成員定義要執行的繪圖動作。 覆寫這個成員函式實作主控描繪 CMenu 物件的繪圖。 應用程式應該還原為顯示內容選取的所有圖形裝置介面 (GDI) 物件提供在 lpDrawItemStruct ,在此成員函式的結束前結束。

提供 DRAWITEMSTRUCT 架構的說明請參閱 CWnd::OnDrawItem

範例

下列程式碼是從 MFC CTRLTEST 範例:

// Override DrawItem() to implement drawing for an owner-draw CMenu object.
// CColorMenu is a CMenu-derived class.
void CColorMenu::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
   CDC* pDC = CDC::FromHandle(lpDIS->hDC);
   COLORREF cr = (COLORREF)lpDIS->itemData; // RGB in item data

   if (lpDIS->itemAction & ODA_DRAWENTIRE)
   {
      // Paint the color item in the color requested
      CBrush br(cr);
      pDC->FillRect(&lpDIS->rcItem, &br);
   }

   if ((lpDIS->itemState & ODS_SELECTED) &&
      (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
   {
      // item has been selected - hilite frame
      COLORREF crHilite = RGB(255-GetRValue(cr),
                  255-GetGValue(cr), 255-GetBValue(cr));
      CBrush br(crHilite);
      pDC->FrameRect(&lpDIS->rcItem, &br);
   }

   if (!(lpDIS->itemState & ODS_SELECTED) &&
      (lpDIS->itemAction & ODA_SELECT))
   {
      // Item has been de-selected -- remove frame
      CBrush br(cr);
      pDC->FrameRect(&lpDIS->rcItem, &br);
   }
}

需求

Header: afxwin.h

請參閱

參考

CMenu 類別

階層架構圖