1

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

4

1 に答える 1