class CCoolListCtrl : public CListCtrlvoid CCoolListCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
switch(pNMCD->dwDrawStage)
{
case CDDS_PREPAINT:
{
*pResult = CDRF_NOTIFYITEMDRAW;
if(m_IsChange)
{
CPoint pt;
int nGap = 6;
for(int i = 0; i < GetItemCount(); i++)
{
GetItemPosition(i, &pt);
pt.y=50;
pt.x = nGap + i*(THUMBNAIL_WIDTH + nGap);
SetItemPosition(i,pt);
} }
m_IsChange=false;
break; }
case CDDS_ITEMPREPAINT:
{
*pResult = CDRF_DODEFAULT;
break;
}
default:
*pResult = CDRF_DODEFAULT;
} *pResult = 0;
继承一个ClistCtrl类,ICON模式下,使用custom draw。
问题:为什么InsertItem()的时候进不来CDDS_ITEMPREPAINT????
补充: const DWORD dwViewStyle =
LVS_OWNERDRAWFIXED | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_BORDER | LVS_ICON;
if (!m_CoolListCtrl.Create (dwViewStyle, rectDummy, this, ID_TRANSFERLV))
解决方案 »
- 在不知道服务器端SQL版本情况下,VC中如何最优连接SQL EXPRESS或SQL SERVER?
- 在 VBA 中调用 OLE 对象的方法可成功,但是在 MFC 中调用却总是失败?
- 使用CSocket和CWinThread无法解决的ASSERT(pThreadState->m_hSocketWindow != NULL);的两个问题。
- [紧急求助]ReadFile读取的数据的行数据大小是不是有限制啊?
- 字符串解析!
- 关于音频文件的播放
- 问一个CTreeCtrl类控件的问题
- 完成端口+重叠I/O的问题,不好意思,只有100分
- 向文件中写入回车符"\n"时,老显示成一个方块,求助
- 用Vc如何获取网络中的IP包和TCP包?
- gdi+环境画图标问题,十万火急!
- 如何编写可被javascript访问的ActiveX
case CDDS_ITEMPREPAINT:
改成:
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
DWORD dwItemPrepaint = pNMCD->dwDrawStage & CDDS_ITEMPREPAINT;
if(dwItemPrepaint > 0)
AfxMessageBox("CDDS_ITEMPREPAINT OK!");
你增加这段调试一下,看看是否收到CDDS_ITEMPREPAINT。
我在InsertItem上设了个断点,在switch(pNMCD->dwDrawStage)设个断点,发现dwDrawStage的值总是为1,也就是CDDS_PREPAINT
这篇文章的最后似乎和你的问题有些关系。看看吧。