У меня есть CListCtrl в диалоговом окне MFC. То, что мне нужно сделать, это разбить некоторые элементы на основе условия, чтобы пользователь не мог его выбрать. До сих пор я изменил цвет, но это не правильное решение. Мой код выглядит так:Отключить или greyout строки в CListCtrl Функция Customdraw
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(). Пожалуйста помоги.
На самом деле я должен как-то позволить пользователю мгновенно узнать, что некоторые элементы недействительны для текущего контекста. Для этого мне приходится седеть строку. Я могу изменить цвета, но это не остановит их от выбора инвалидов. Альтернативы, такие как отключение кнопки OK/внутренняя обработка недопустимого всплывающего окна/предупреждения, не являются предпочтительными. –