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() を呼び出すことができます。助けてください。