📄 tut31.html
字号:
pop wc.hInstance <br>
mov wc.hbrBackground,COLOR_WINDOW+1 <br>
mov wc.lpszMenuName,IDM_MAINMENU <br>
mov wc.lpszClassName,OFFSET ClassName <br>
invoke LoadIcon,NULL,IDI_APPLICATION <br>
mov wc.hIcon,eax <br>
mov wc.hIconSm,eax <br>
invoke LoadCursor,NULL,IDC_ARROW <br>
mov wc.hCursor,eax <br>
invoke RegisterClassEx, addr wc <br>
invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst,NULL <br>
mov hwnd,eax <br>
invoke ShowWindow, hwnd,SW_SHOWNORMAL <br>
invoke UpdateWindow, hwnd <br>
.while TRUE <br>
invoke GetMessage, ADDR msg,NULL,0,0 <br>
.break .if (!eax) <br>
invoke TranslateMessage, ADDR msg <br>
invoke DispatchMessage, ADDR msg <br>
.endw <br>
mov eax,msg.wParam <br>
ret <br>
WinMain endp <br>
<br>
InsertColumn proc <br>
LOCAL lvc:LV_COLUMN <br>
<br>
mov lvc.imask,LVCF_TEXT+LVCF_WIDTH <br>
mov lvc.pszText,offset Heading1 <br>
mov lvc.lx,150 <br>
invoke SendMessage,hList, LVM_INSERTCOLUMN, 0, addr lvc<br>
</font><font face="Fixedsys">or lvc.imask,LVCF_FMT<br>
mov lvc.fmt,LVCFMT_RIGHT <br>
mov lvc.pszText,offset Heading2 <br>
mov lvc.lx,100<br>
</font><font face="Fixedsys">invoke SendMessage,hList, LVM_INSERTCOLUMN,
1 ,addr lvc <br>
ret <br>
InsertColumn endp <br>
<br>
ShowFileInfo proc uses edi row:DWORD, lpFind:DWORD <br>
LOCAL lvi:LV_ITEM <br>
LOCAL buffer[20]:BYTE <br>
mov edi,lpFind <br>
assume edi:ptr WIN32_FIND_DATA <br>
mov lvi.imask,LVIF_TEXT+LVIF_PARAM <br>
push row <br>
pop lvi.iItem <br>
mov lvi.iSubItem,0 <br>
lea eax,[edi].cFileName <br>
mov lvi.pszText,eax <br>
push row <br>
pop lvi.lParam <br>
invoke SendMessage,hList, LVM_INSERTITEM,0, addr lvi <br>
mov lvi.imask,LVIF_TEXT <br>
inc lvi.iSubItem <br>
invoke wsprintf,addr buffer, addr template,[edi].nFileSizeLow <br>
lea eax,buffer <br>
mov lvi.pszText,eax <br>
invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi <br>
assume edi:nothing <br>
ret <br>
ShowFileInfo endp <br>
<br>
FillFileInfo proc uses edi <br>
LOCAL finddata:WIN32_FIND_DATA <br>
LOCAL FHandle:DWORD <br>
<br>
invoke FindFirstFile,addr FileNamePattern,addr finddata <br>
.if eax!=INVALID_HANDLE_VALUE <br>
mov FHandle,eax <br>
xor edi,edi <br>
.while eax!=0 <br>
test finddata.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY
<br>
.if ZERO?</font><br>
<font face="Fixedsys"> invoke
ShowFileInfo,edi, addr finddata <br>
inc edi <br>
.endif <br>
invoke FindNextFile,FHandle,addr finddata <br>
.endw <br>
invoke FindClose,FHandle <br>
.endif <br>
ret <br>
FillFileInfo endp <br>
<br>
String2Dword proc uses ecx edi edx esi String:DWORD <br>
LOCAL Result:DWORD <br>
<br>
mov Result,0 <br>
mov edi,String <br>
invoke lstrlen,String <br>
.while eax!=0 <br>
xor edx,edx <br>
mov dl,byte ptr [edi] <br>
sub dl,"0" <br>
mov esi,eax <br>
dec esi <br>
push eax <br>
mov eax,edx <br>
push ebx <br>
mov ebx,10 <br>
.while esi > 0 <br>
mul ebx <br>
dec esi <br>
.endw <br>
pop ebx <br>
add Result,eax <br>
pop eax <br>
inc edi <br>
dec eax <br>
.endw <br>
mov eax,Result <br>
ret <br>
String2Dword endp <br>
<br>
CompareFunc proc uses edi lParam1:DWORD, lParam2:DWORD, SortType:DWORD <br>
LOCAL buffer[256]:BYTE <br>
LOCAL buffer1[256]:BYTE <br>
LOCAL lvi:LV_ITEM <br>
<br>
mov lvi.imask,LVIF_TEXT <br>
lea eax,buffer <br>
mov lvi.pszText,eax <br>
mov lvi.cchTextMax,256 <br>
.if SortType==1 <br>
mov lvi.iSubItem,1 <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam1,addr lvi
<br>
invoke String2Dword,addr buffer <br>
mov edi,eax <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam2,addr lvi
<br>
invoke String2Dword,addr buffer <br>
sub edi,eax <br>
mov eax,edi <br>
.elseif SortType==2 <br>
mov lvi.iSubItem,1 <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam1,addr lvi
<br>
invoke String2Dword,addr buffer <br>
mov edi,eax <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam2,addr lvi
<br>
invoke String2Dword,addr buffer <br>
sub eax,edi <br>
.elseif SortType==3 <br>
mov lvi.iSubItem,0 <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam1,addr lvi
<br>
invoke lstrcpy,addr buffer1,addr buffer <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam2,addr lvi
<br>
invoke lstrcmpi,addr buffer1,addr buffer <br>
.else <br>
mov lvi.iSubItem,0 <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam1,addr lvi
<br>
invoke lstrcpy,addr buffer1,addr buffer <br>
invoke SendMessage,hList,LVM_GETITEMTEXT,lParam2,addr lvi
<br>
invoke lstrcmpi,addr buffer,addr buffer1 <br>
.endif <br>
ret <br>
CompareFunc endp <br>
<br>
UpdatelParam proc uses edi <br>
LOCAL lvi:LV_ITEM <br>
<br>
invoke SendMessage,hList, LVM_GETITEMCOUNT,0,0 <br>
mov edi,eax <br>
mov lvi.imask,LVIF_PARAM <br>
mov lvi.iSubItem,0 <br>
mov lvi.iItem,0 <br>
.while edi>0 <br>
push lvi.iItem <br>
pop lvi.lParam <br>
invoke SendMessage,hList, LVM_SETITEM,0,addr lvi <br>
inc lvi.iItem <br>
dec edi <br>
.endw <br>
ret <br>
UpdatelParam endp <br>
<br>
ShowCurrentFocus proc <br>
LOCAL lvi:LV_ITEM <br>
LOCAL buffer[256]:BYTE <br>
<br>
invoke SendMessage,hList,LVM_GETNEXTITEM,-1, LVNI_FOCUSED<br>
mov lvi.iItem,eax <br>
mov lvi.iSubItem,0 <br>
mov lvi.imask,LVIF_TEXT <br>
lea eax,buffer <br>
mov lvi.pszText,eax <br>
mov lvi.cchTextMax,256 <br>
invoke SendMessage,hList,LVM_GETITEM,0,addr lvi <br>
invoke MessageBox,0, addr buffer,addr AppName,MB_OK <br>
ret <br>
ShowCurrentFocus endp <br>
<br>
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM <br>
.if uMsg==WM_CREATE <br>
invoke CreateWindowEx, NULL, addr ListViewClassName, NULL,
LVS_REPORT+WS_CHILD+WS_VISIBLE, 0,0,0,0,hWnd, NULL, hInstance, NULL <br>
mov hList, eax <br>
invoke InsertColumn <br>
invoke FillFileInfo <br>
RGB 255,255,255 <br>
invoke SendMessage,hList,LVM_SETTEXTCOLOR,0,eax <br>
RGB 0,0,0 <br>
invoke SendMessage,hList,LVM_SETBKCOLOR,0,eax <br>
RGB 0,0,0 <br>
invoke SendMessage,hList,LVM_SETTEXTBKCOLOR,0,eax <br>
invoke GetMenu,hWnd <br>
mov hMenu,eax <br>
invoke CheckMenuRadioItem,hMenu,IDM_ICON,IDM_LIST, IDM_REPORT,MF_CHECKED
<br>
.elseif uMsg==WM_COMMAND <br>
.if lParam==0 <br>
invoke GetWindowLong,hList,GWL_STYLE <br>
and eax,not LVS_TYPEMASK <br>
mov edx,wParam <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -