Sử dụng MFC và Visual Studio 2010 C++. Tôi cần một cách để làm cho một số hàng riêng biệt của một CListCtrl nổi bật (tuy nhiên tôi không muốn sử dụng khả năng lựa chọn tích hợp để làm nổi bật các hàng). Nó có thể là màu của nền hàng hoặc trọng lượng phông chữ hoặc thậm chí là hình ảnh (nếu đó là biểu diễn).MFC: Làm cách nào để thay đổi màu/độ đậm nét của các hàng không rõ ràng của ListCtrl?
Lý tưởng nhất là tôi muốn biết cách thực hiện điều này bằng cách sử dụng kiểm soát danh sách chứng khoán. Tuy nhiên, nếu điều này là không thể thì hãy cho tôi biết cách sử dụng mã của bên thứ ba.
CẬP NHẬT
Dưới đây là đoạn code tôi đã kết thúc bằng:
void MyList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* cd = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
*pResult = CDRF_DODEFAULT;
switch(cd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
int rowNumber = cd->nmcd.dwItemSpec;
bool highlightRow = (bool)GetItemData(rowNumber);
if (highlightRow)
{
COLORREF backgroundColor;
backgroundColor = RGB(255, 0, 0);
cd->clrTextBk = backgroundColor;
}
}
break;
default:
break;
}
}
Trong trường hợp của tôi, tôi đã không sử dụng các ItemData cho bất cứ điều gì, vì vậy tôi gọi SetItemData nơi khác với một giá trị boolean để cho biết liệu hàng có nên được đánh dấu hay không.
Đó là thực sự chính xác những gì tôi đầu trong tâm trí ;-) Về 'GetItemData (rowNumber) ', bạn không cần phải cho nó có sẵn trong' CD-> nmcd.lItemlParam' –
@ Serge-appTranslator: ah điểm tốt , sẽ lưu một cuộc gọi.Tôi sẽ phải thử điều đó. – User