我在 MFC 对话框中有一个 CListCtrl。我要做的是根据条件禁用一些项目,以便用户无法选择它。直到现在我已经更改了颜色,但这不是正确的解决方案。我的代码如下所示:
void CSomeDialog::OnCustomdrawElementList(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = 0;
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
COLORREF crText;
//Here I want to do disable based on some condition of the data related to the item//
if ( (pLVCD->nmcd.dwItemSpec % 2) == 0 )
crText = RGB(255,0,0);
else if ( (pLVCD->nmcd.dwItemSpec % 2) == 1 )
crText = RGB(0,255,0);
// Storing the color back
pLVCD->clrText = crText;
*pResult = CDRF_DODEFAULT;
}
}
我还找不到有关如何禁用行的任何参考。
另一个问题,即使在管理禁用部分之后,如何在这个自定义绘图功能中获取与项目相关的数据?可以使用 pLVCD->nmcd.lItemlParam 来调用 GetItemData()。请帮忙。