您的位置:首页 > 其它

MFC listCtrl选中某一项,LIST失去焦点时,该项仍然显示高亮

2014-03-13 17:31 1281 查看
//消息映射
ON_NOTIFY_REFLECT(NM_CUSTIOMDRAW,OnCUstomDraw)

void CAppDlg::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )

{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
  switch(pLVCD->nmcd.dwDrawStage)

 {

case CDDS_PREPAINT:

*pResult = CDRF_NOTIFYITEMDRAW;

break;

caseCDDS_ITEMPREPAINT:

*pResult = CDRF_NOTIFYSUBITEMDRAW;

break;

case  CDDS_ITEMPREPAINT | CDDS_SUBITEM:

COLORREF clrNewTextColor, clrNewBkColor; 
int    nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );

BOOL bSelect = FALSE;
POSITION pos =m_ctrlListName.GetFirstSelectedItemPosition(); 
while(pos) 

int index = m_ctrlListName.GetNextSelectedItem(pos); 
if(index==nItem) 

bSelect = TRUE; 
break; 


if(bSelect)
{
clrNewTextColor = RGB(255,0,0);//Set the text to red
clrNewBkColor = RGB(51,102,205);//Set the bkgrnd color to blue
}
else
{
clrNewTextColor = RGB(0,0,0);//Leave the text black
clrNewBkColor = RGB(204,232,207); //leave the bkgrnd color white
}

pLVCD->clrText = clrNewTextColor;
pLVCD->clrTextBk = clrNewBkColor;
        *pResult = CDRF_DODEFAULT;

break;

    Default:

 *pResult = CDRF_DODEFAULT;

break;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  高亮 LISTCTRL 焦点