MFC Tab 控件自定义绘制:重写 DrawItem 函数
在 MFC 中,要重写 Tab 控件的 DrawItem 函数,需要执行以下步骤:
-
在你的 Tab 控件的类中添加一个成员函数 DrawItem,它的参数为 LPDRAWITEMSTRUCT(即绘制项结构体指针)。
-
在 OnInitDialog 函数中,通过以下代码将 Tab 控件的绘制风格设置为 OWNERDRAWFIXED:
m_tabCtrl.ModifyStyle(0, TCS_OWNERDRAWFIXED); -
在 DrawItem 函数中,实现你想要的绘制效果。可以使用 GetSysColor 函数获取系统颜色,使用 GetTextMetrics 函数获取字体信息,使用 DrawText 函数绘制文本等。
下面是一个简单的示例代码:
void CMyTabCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
// 获取绘制项的矩形区域
CRect rect(lpDrawItemStruct->rcItem);
// 获取绘制项的标题文本
TCHAR szText[256];
TCITEM tci;
tci.mask = TCIF_TEXT;
tci.pszText = szText;
tci.cchTextMax = 256;
GetItem(lpDrawItemStruct->itemID, &tci);
// 设置字体
CFont font;
font.CreateFontIndirect(&lpDrawItemStruct->itemData);
dc.SelectObject(&font);
// 绘制文本
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
dc.DrawText(szText, -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
dc.Detach();
}
原文地址: https://www.cveoy.top/t/topic/ottP 著作权归作者所有。请勿转载和采集!