選中項失焦保持高亮

需求場景:

單擊、按住ctrl\shfit鍵多選選中表控件后,需要至其他區域進行后續操作,失焦會使選中項高亮取消,在某些業務場景下需要保留選中項的高亮狀態

示例代碼:



添加響應事件 NM_CUSTOMDRAW

//實現代碼

void TestDemoDlg::OnNMCustomdrawTestList(NMHDR *pNMHDR, LRESULT *pResult)

{

? NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR );

switch(pLVCD->nmcd.dwDrawStage)

{

?case CDDS_PREPAINT:

*pResult = CDRF_NOTIFYITEMDRAW;

break;?

?case CDDS_ITEMPREPAINT:

*pResult = CDRF_NOTIFYSUBITEMDRAW;

break;?

?case CDDS_ITEMPREPAINT | CDDS_SUBITEM:

COLORREF clrNewTextColor, clrNewBkColor;

?int nItem = static_cast( pLVCD->nmcd.dwItemSpec );

BOOL bSelect = FALSE;

POSITION pos =m_TestList.GetFirstSelectedItemPosition();

while(pos)

{

int index = m_TestList.GetNextSelectedItem(pos);

if(index==nItem)

{

bSelect = TRUE;

break;

}

}

if(bSelect)

{

clrNewTextColor =RGB(255,0,0);//設置選中行文本顏色 紅色

clrNewBkColor? = RGB(51,102,205);//設置選中行文本背景色 藍色

}

else

{

clrNewTextColor = RGB(0,0,0);//保持文本顏色 黑色

clrNewBkColor = RGB(204,232,207); //保持文本背景色 白色

}

pLVCD->clrText = clrNewTextColor;

pLVCD->clrTextBk = clrNewBkColor;

*pResult = CDRF_DODEFAULT;

break;

//Default:

//*pResult = CDRF_DODEFAULT;

break;

}

}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容