mov eax,result
ret
string2dword endp
comparefunc proc uses edi lparam1:dword, lparam2:dword, sorttype:dword
local buffer[256]:byte
local buffer1[256]:byte
local lvi:lv_item
mov lvi.imask,lvif_text
lea eax,buffer
mov lvi.psztext,eax
mov lvi.cchtextmax,256
.if sorttype==1
mov lvi.isubitem,1
invoke sendmessage,hlist,lvm_getitemtext,lparam1,addr lvi
invoke string2dword,addr buffer
mov edi,eax
invoke sendmessage,hlist,lvm_getitemtext,lparam2,addr lvi
invoke string2dword,addr buffer
sub edi,eax
mov eax,edi
.elseif sorttype==2
mov lvi.isubitem,1
invoke sendmessage,hlist,lvm_getitemtext,lparam1,addr lvi
invoke string2dword,addr buffer
mov edi,eax
invoke sendmessage,hlist,lvm_getitemtext,lparam2,addr lvi
invoke string2dword,addr buffer
sub eax,edi
.elseif sorttype==3
mov lvi.isubitem,0
invoke sendmessage,hlist,lvm_getitemtext,lparam1,addr lvi
invoke lstrcpy,addr buffer1,addr buffer
invoke sendmessage,hlist,lvm_getitemtext,lparam2,addr lvi
invoke lstrcmpi,addr buffer1,addr buffer
.else
mov lvi.isubitem,0
invoke sendmessage,hlist,lvm_getitemtext,lparam1,addr lvi
invoke lstrcpy,addr buffer1,addr buffer
invoke sendmessage,hlist,lvm_getitemtext,lparam2,addr lvi
invoke lstrcmpi,addr buffer,addr buffer1
.endif
ret
comparefunc endp
updatelparam proc uses edi
local lvi:lv_item
invoke sendmessage,hlist, lvm_getitemcount,0,0
mov edi,eax
mov lvi.imask,lvif_param
mov lvi.isubitem,0
mov lvi.iitem,0
.while edi>0
push lvi.iitem
pop lvi.lparam
invoke sendmessage,hlist, lvm_setitem,0,addr lvi
inc lvi.iitem
dec edi
.endw
ret
updatelparam endp
showcurrentfocus proc
local lvi:lv_item
local buffer[256]:byte
invoke sendmessage,hlist,lvm_getnextitem,-1, lvni_focused
mov lvi.iitem,eax
mov lvi.isubitem,0
mov lvi.imask,lvif_text
lea eax,buffer
mov lvi.psztext,eax
mov lvi.cchtextmax,256
invoke sendmessage,hlist,lvm_getitem,0,addr lvi
invoke messagebox,0, addr buffer,addr appname,mb_ok
ret
showcurrentfocus endp
wndproc proc hwnd:hwnd, umsg:uint, wparam:wparam, lparam:lparam
.if umsg==wm_create
invoke createwindowex, null, addr listviewclassname, null, lvs_report+ws_child+ws_visible, 0,0,0,0,hwnd, null, hinstance, null
mov hlist, eax
invoke insertcolumn
invoke fillfileinfo
rgb 255,255,255
invoke sendmessage,hlist,lvm_settextcolor,0,eax
rgb 0,0,0
invoke sendmessage,hlist,lvm_setbkcolor,0,eax
rgb 0,0,0
invoke sendmessage,hlist,lvm_settextbkcolor,0,eax
invoke getmenu,hwnd
mov hmenu,eax
invoke checkmenuradioitem,hmenu,idm_icon,idm_list, idm_report,mf_checked
.elseif umsg==wm_command
.if lparam==0
invoke getwindowlong,hlist,gwl_style
and eax,not lvs_typemask
mov edx,wparam
and edx,0ffffh
push edx
or eax,edx
invoke setwindowlong,hlist,gwl_style,eax
pop edx
invoke checkmenuradioitem,hmenu,idm_icon,idm_list, edx,mf_checked
.endif
.elseif umsg==wm_notify
push edi
mov edi,lparam
assume edi:ptr nmhdr
mov eax,[edi].hwndfrom
.if eax==hlist