iczelion tut31[5]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 jimgreen 的 blog

  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

本文关键:iczelion asm
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top