怎樣設定MFC的ListControl的表頭和行高
uj5u.com熱心網友回復:
改變 字體 大小uj5u.com熱心網友回復:
設定圖示,撐起來uj5u.com熱心網友回復:
請問下MFC的表頭的背景怎樣設定?uj5u.com熱心網友回復:
#define BACK_COLOR RGB(255,128,255)
void CMyListCtrl::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your message handler code here and/or call default
CHeaderCtrl *pHead=GetHeaderCtrl();
CRect rc;
pHead->GetItemRect(lpDrawItemStruct->itemID,&rc);
HBRUSH br=CreateSolidBrush(BACK_COLOR);
::FillRect(lpDrawItemStruct->hDC,&rc,br);
DeleteObject(br);
char *pTxt=(char *)lpDrawItemStruct->itemData;
int len=strlen(pTxt);
SetBkMode(lpDrawItemStruct->hDC,TRANSPARENT);
HDITEM hdItem;
ZeroMemory(&hdItem,sizeof(hdItem));
hdItem.mask=HDI_FORMAT | HDI_WIDTH;
pHead->GetItem(lpDrawItemStruct->itemID,&hdItem);
if(hdItem.fmt & HDF_CENTER)
{
CSize sz;// = (CDC::FromHandle(lpDrawItemStruct->hDC))->GetTextExtent(pTxt,len);
::GetTextExtentPoint32(lpDrawItemStruct->hDC,pTxt,len,&sz);
rc.left += (rc.Width()-sz.cx)/2;
}
::TextOut(lpDrawItemStruct->hDC,rc.left,rc.top+2,pTxt,len);
// CListCtrl::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
uj5u.com熱心網友回復:
表頭是要多載的,他是一個獨立的控制元件HeadCtrluj5u.com熱心網友回復:
注意 head 要 修改
m_List.InsertColumn(0, "序號", LVCFMT_LEFT, 60);
m_List.InsertColumn(1, "名稱", LVCFMT_LEFT, 300);
m_List.InsertColumn(2, "重量", LVCFMT_LEFT, 300);
// Modify Item 1 名稱
HDITEM hdItem;
ZeroMemory(&hdItem,sizeof(hdItem));
hdItem.mask=HDI_FORMAT | HDI_LPARAM;
hdItem.fmt=HDF_CENTER | HDF_OWNERDRAW;
hdItem.lParam=(long)"名稱";
CHeaderCtrl *pHead=m_List.GetHeaderCtrl();
pHead->SetItem(1,&hdItem);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/84210.html
標籤:界面
