作者:小青蛙 此贴贴于2006-6-9 8:45:40,已被阅读710次/回复3 
代码片段在里面。有一点要说明,网上到处说要设置listview控件的自绘样式,害我浪费了很多时间,不需要设置自绘,设置后不会产生CDDS_ITEMPREPAINT消息了。
    .elseif    eax==WM_NOTIFY
    ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        mov    edi,lParam
        assume    edi:ptr NMLVCUSTOMDRAW
        mov    eax,[edi].nmcd.hdr.code
        .if    eax== NM_CUSTOMDRAW
            mov    eax,[edi].nmcd.dwDrawStage
            .if    eax==CDDS_PREPAINT
                invoke    SetWindowLong,hWin,DWL_MSGRESULT,CDRF_NOTIFYITEMDRAW
            .elseif eax==CDDS_ITEMPREPAINT
                mov    eax,[edi].nmcd.dwItemSpec
                and    eax,1
                dec    eax
                and    eax,(0C6FFC6h-0FFCBFFh)
                add    eax,0FFCBFFh
                mov    [edi].clrTextBk,eax
                mov    [edi].clrText,0990066h
                invoke    SetWindowLong,hWin,DWL_MSGRESULT,CDRF_NEWFONT
            .endif
        .endif
        ASSUME    edi:nothing
;行高调整只能使用加设imagelist的方法。建立一个空的imagelist,高设置成你要的listview行高,然后绑定imagelist到listview就生效了。
代码如下:
;listview初始化过程中增加
    mov    eax,LVS_EX_FULLROWSELECT or LVS_EX_GRIDLINES or LVS_EX_SUBITEMIMAGES
    invoke    SendMessage,hListView,LVM_SETEXTENDEDLISTVIEWSTYLE,0,eax
    invoke    ImageList_Create,18,18,ILC_COLORDDB or ILC_MASK,0,0;我定的行高是18
    mov    hImageList,eax
    invoke    SendMessage,hListView,LVM_SETIMAGELIST,LVSIL_SMALL,hImageList


初学,才发现汇编的乐趣。

此贴的父贴(直接):
厉害,大家分享一下,呵呵541 melost 2006-6-8 18:22:57 0 正常
此贴的回复贴(直接):
嘿,正是我需要的,谢谢了,辛苦~~~478 MuseHero 2006-6-9 21:52:05 0 正常
我搞了半天也没搞出来, 小青蛙做个完整的例子出来吧,在Aogo老大这儿发布一下。465 tcend 2006-6-12 19:46:56 48 正常
333285 ttyyqq 2013-2-28 11:17:10 11 正常