怎样设置MFC的ListControl的表头和行高
解决方案 »
- vs2008遇到这种代码,编译崩溃
- 请问VC6下没有设置断点仍然中断可能是什么情况?
- 今天报名参加2009研究生入学考试的朋友请进...
- ADO连接ACCESS中的UPDATE语法报错
- memset(a,'\0',sizeof(a))和memset(&a,'\0',sizeof(a)) 有何区别?
- 如何使得屏幕不闪烁?
- 求基于UDP协议的下载服务器程序模型
- 调用com时候的CoInitialize(0)究竟做了什么?为什么我的一个指针里面的字符串没了?
- 共享文件夹权限设置问题,在线等,急急
- win 7如何用socket实现消息的收发和文件的传输
- 在MFC中如何读入bin文件转化输出TXT文件?
- Ansi工程中如何使用Unicode Edit控件?
#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);
}
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);