15,979
社区成员
发帖
与我相关
我的任务
分享
void CXXDlg::OnOK()
{
// TODO: Add extra validation here
m_list.SetFocus();
SetTimer(1, 500, NULL);
}
void CXXDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(1 == nIDEvent)
{
if(m_list.GetSafeHwnd())
{
m_list.SetItemState(5, (LVIS_SELECTED == m_list.GetItemState(5, LVIS_SELECTED)) ? 0 : LVIS_SELECTED, LVIS_SELECTED);
static int nCount = 0;
#define MAX_FLASH_COUNT 5
if(++nCount >= MAX_FLASH_COUNT)
{
KillTimer(1);
m_list.SetItemState(5, LVIS_SELECTED, LVIS_SELECTED);
}
}
}
CDialog::OnTimer(nIDEvent);
}
void CPackViewerDlg::OnNMCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage)
{
COLORREF clrNewTextColor, clrNewBkColor;
int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );
// 这里是取我自己的虚列表数据,判断一下Item的状态改变颜色
CPackFile* pFile = m_Filter[nItem];
if(pFile->GetType() == CPackFile::FILE_NEW)
{
clrNewTextColor = RGB(0,0,255);
clrNewBkColor = RGB(255,255,255);
}
pLVCD->clrText = clrNewTextColor;
pLVCD->clrTextBk = clrNewBkColor;
*pResult = CDRF_DODEFAULT;
}
}
要控制颜色时间,做个定时器去掉标志就好了。