遇到一个比较奇怪的问题,debug 版本里运行没任何问题,release 就不行。情况,在OnTimer(UINT nIDEvent)函数中调用SetItem函数改变显示的图标不生效。具体调用的代码LVITEM lvItem;
lvItem.mask = LVIF_IMAGE;
lvItem.iItem = m_curItem;
lvItem.iImage = 1;
m_locResultList.SetItem(&lvItem);原来显示的图标id是0,我想把他改成显示1,注:此段代码只在release 版本的 OnTimer(UINT nIDEvent)里调用就是不生效。
在release版本的其它函数中调用没问题的。
可能和定时器有一定关系。在定时器中我还调用了 m_locResultList.EnsureVisible(m_curItem,true);
这个是生效的。
lvItem.mask = LVIF_IMAGE;
lvItem.iItem = m_curItem;
lvItem.iImage = 1;
m_locResultList.SetItem(&lvItem);原来显示的图标id是0,我想把他改成显示1,注:此段代码只在release 版本的 OnTimer(UINT nIDEvent)里调用就是不生效。
在release版本的其它函数中调用没问题的。
可能和定时器有一定关系。在定时器中我还调用了 m_locResultList.EnsureVisible(m_curItem,true);
这个是生效的。
BOOL SetItem(
int nItem,
int nSubItem,
UINT nMask,
LPCTSTR lpszItem,
int nImage,
UINT nState,
UINT nStateMask,
LPARAM lParam
);
m_locResultList.InvalidateRect(NULL);UpdateWindow();
不行,
至于另另外一个重载函数,我觉的肯定还是那样的,最终的实现是一样的。
关键不在函数的本身。
OnTimer(UINT nIDEvent)
函数里的功能都是实现的,只是好像不重画一下,
但我调了m_locResultList.EnsureVisible(m_curItem,true);
按理说也已经重画了。
谢谢楼上两位关注!