pListCtrl->SetFocus();
pListCtrl->SetItemState(idx, LVIS_SELECTED, LVIS_SELECTED);idx 为要高亮的ITEM的索引
pListCtrl->SetItemState(idx, LVIS_SELECTED, LVIS_SELECTED);idx 为要高亮的ITEM的索引
解决方案 »
- tab式的MDI在创建子窗口或切换的时候,屏幕闪,怎么办?!
- fatal error LNK1313: 检测到 ijw/native 模块;无法与 pure 模块链接
- 如何生成PDF?
- 如何在mfc里释放GDI+资源
- DLL 路径设置的问题,谢谢各位,急~
- 问个创建进程的问题
- 请问在使用SetWindowsHookEx安装钩子时,OpenProcess的idHook是属于什么?
- (关于并口打印机的问题),只要给思路者或者回答问题者一律给分!急!在线等待!
- 有关ado的数据库的问题
- 请问如何使程序的界面在不同的分辩率下面都保持一致?具体情况请大家进来看看,急呀!
- 我在Dialog 中定义了十几个button,我把他们 group,由于他们的function基本相同,只是ID不同?怎样能简化?
- 快来帮帮忙!SDK
void CListCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
//得到dc
LPDRAWITEMSTRUCT lpDIS = lpDrawItemStruct;
CDC* pDC = CDC::FromHandle(lpDIS->hDC); LVITEM lvi = {0};
lvi.mask = LVIF_STATE;//|LVIF_IMAGE;
lvi.stateMask = LVIS_FOCUSED | LVIS_SELECTED ;
lvi.iItem = lpDIS->itemID;
BOOL bGet = GetItem(&lvi); BOOL bHighlight =((lvi.state & LVIS_DROPHILITED)||((lvi.state & LVIS_SELECTED) &&
((GetFocus() == this)|| (GetStyle() & LVS_SHOWSELALWAYS)))); // 画文本背景
CRect rcBack = lpDIS->rcItem;
pDC->SetBkMode(TRANSPARENT);
if( bHighlight )
{
pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT)); pDC->FillRect(rcBack, &CBrush(::GetSysColor(COLOR_HIGHLIGHT)));
}
else
{
if (lpDIS->itemID%2 ==0)
{
pDC->SetTextColor(0x0C0F80);
pDC->FillRect(rcBack, &CBrush(0xEEF1E3));
}
else
{
pDC->SetTextColor(RGB(0,128,255));
pDC->FillRect(rcBack, &CBrush(0xE3e3e3));
}
} //设置字体颜色
CString str; //得到焦点大小
CRect rcFocus = lpDIS->rcItem;
rcFocus.DeflateRect(1,1,1,1); if (lpDIS->itemAction & ODA_DRAWENTIRE)
{
//写文本
CString szText;
for (int i = 0; i < GetColumns(); i++)
{ //循环得到文本
CRect rcItem;
if ( !GetSubItemRect(lpDIS->itemID, i, LVIR_LABEL, rcItem ))
continue;
szText = GetItemText( lpDIS->itemID, i ); rcItem.left += 5; rcItem.right -= 1;
pDC->DrawText(szText, lstrlen(szText), &rcItem, DT_CENTER|DT_VCENTER|DT_NOPREFIX|DT_SINGLELINE);
}
}
}
请看:
http://www.csdn.net/expert/topic/628/628198.xml?temp=.4544641
能不能给一个最简单的范例
[email protected]
谢了!
或者调用 SetExtendedStyle(GetExtentedStyle()|******* )具体参数不记得了。
For self-drawing list boxes and combo boxes, you must override MeasureItem and DrawItem. You must specify the OWNERDRAWVARIABLE style in the dialog template (LBS_OWNERDRAWVARIABLE and CBS_OWNERDRAWVARIABLE respectively). The OWNERDRAWFIXED style will not work with self-drawing items since the fixed item height is determined before self-drawing controls are attached to the list box. (The Win 3.1 member functions CListBox::SetItemHeight and CComboBox::SetItemHeight can be used to get around this limitation.)
pListCtrl->SetItemState(idx, LVIS_SELECTED, LVIS_SELECTED);