有没有办法把listctrl的选定项由蓝色背景改为灰色? 有没有办法把listctrl的选定项由蓝色背景改为灰色? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自绘 CodeProject上有很多例子 重载 DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) CDC* pDC; pDC = CDC::FromHandle(lpDrawItemStruct->hDC); ... for ( int nCol=0; GetColumn(nCol, &lvc); nCol++) { CRect rcItem; GetSubItemRect(lpDrawItemStruct->itemID,nCol,LVIR_LABEL,rcItem); if ( lpDrawItemStruct->itemState & ODS_SELECTED ) { pDC->FillSolidRect(&rcItem,m_selBkColor) ; //m_selBkColor你想要的颜色值 pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT)) ; // 字体颜色也可改 } } void CxxxxDlg::OnCustDrawList(NMHDR *pNMHDR,LRESULT *pResult){ // TODO: Add your message handler code here and/or call default *pResult=CDRF_NOTIFYITEMDRAW ; //| CDRF_NOTIFYSUBITEMDRAW | CDRF_NOTIFYPOSTPAINT| CDRF_NOTIFYPOSTERASE; LPNMLVCUSTOMDRAW pDraw=(LPNMLVCUSTOMDRAW)pNMHDR; DWORD dwDrawStage=pDraw->nmcd.dwDrawStage; int nID=pDraw->nmcd.dwItemSpec;// int selID=m_List.GetNextItem(-1,LVNI_SELECTED);//选择项 int subItem=pDraw->iSubItem;// if((nID==selID) && (subItem==0)) { // afxDump << selID << ";" << subItem <<"\n"; CDC* pdc=CDC::FromHandle(pDraw->nmcd.hdc);// CRect rc; m_List.GetItemRect(selID,&rc,LVIR_LABEL); CString txt=m_List.GetItemText(selID,0);// CSize sz=pdc->GetOutputTextExtent(txt); rc.right=rc.left+sz.cx+8; rc.DeflateRect(1,1);// DWORD clr=GetSysColor(COLOR_GRAYTEXT);//COLOR_HIGHLIGHT); pdc->FillSolidRect(&rc,clr);// pdc->SetTextColor(RGB(255,255,255));//white pdc->SetBkColor(clr);// CFont* pfnt=pdc->GetCurrentFont(); pdc->SelectObject(pfnt); // pdc->TextOut(rc.left,rc.top,txt); *pResult |= CDRF_SKIPDEFAULT; }} int selID=m_List.GetNextItem(-1,LVNI_SELECTED);//选择项int subItem=pDraw->iSubItem; ...我是试过的。 关于tab control,怎么访问其他标签页里面的控件呢? 哪位朋友可以从21互联上下载东西恳请帮下忙 if(pixel == 0 || pixel == 1)? 如何显示资源DLL文件中的网页 有没有比较简洁明了的读数据库中记录的代码??(ADO) 字符串问题? IDE中控件窗口不见了,如何打开?现在没法放按钮等基本控件了。 有精通网络编程的吗 谁帮写个DLL函数声明与实现的例子 很简单的东西难倒菜鸟:对大量文字进行处理。。好人进来,会这不难。解决了及时给分 图像显示问题 CMSFlexGrid对象使用另一个类的方法,出错
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
...
for ( int nCol=0; GetColumn(nCol, &lvc); nCol++)
{
CRect rcItem;
GetSubItemRect(lpDrawItemStruct->itemID,nCol,LVIR_LABEL,rcItem); if ( lpDrawItemStruct->itemState & ODS_SELECTED )
{
pDC->FillSolidRect(&rcItem,m_selBkColor) ; //m_selBkColor你想要的颜色值
pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT)) ; // 字体颜色也可改
}
}
{
// TODO: Add your message handler code here and/or call default
*pResult=CDRF_NOTIFYITEMDRAW ;
//| CDRF_NOTIFYSUBITEMDRAW | CDRF_NOTIFYPOSTPAINT| CDRF_NOTIFYPOSTERASE;
LPNMLVCUSTOMDRAW pDraw=(LPNMLVCUSTOMDRAW)pNMHDR;
DWORD dwDrawStage=pDraw->nmcd.dwDrawStage;
int nID=pDraw->nmcd.dwItemSpec;//
int selID=m_List.GetNextItem(-1,LVNI_SELECTED);//选择项 int subItem=pDraw->iSubItem;
//
if((nID==selID) && (subItem==0))
{ // afxDump << selID << ";" << subItem <<"\n";
CDC* pdc=CDC::FromHandle(pDraw->nmcd.hdc);
//
CRect rc;
m_List.GetItemRect(selID,&rc,LVIR_LABEL);
CString txt=m_List.GetItemText(selID,0);
//
CSize sz=pdc->GetOutputTextExtent(txt);
rc.right=rc.left+sz.cx+8;
rc.DeflateRect(1,1);
//
DWORD clr=GetSysColor(COLOR_GRAYTEXT);//COLOR_HIGHLIGHT);
pdc->FillSolidRect(&rc,clr);
//
pdc->SetTextColor(RGB(255,255,255));//white
pdc->SetBkColor(clr);
//
CFont* pfnt=pdc->GetCurrentFont();
pdc->SelectObject(pfnt);
//
pdc->TextOut(rc.left,rc.top,txt);
*pResult |= CDRF_SKIPDEFAULT;
}
}
int subItem=pDraw->iSubItem; ...
我是试过的。