📄 show_data.asm
字号:
WM_SHOWDATA=WM_USER+5919
DlgShowDataProc proto :DWORD,:DWORD,:DWORD,:DWORD
__settext macro nID,lpBuf,sizeoftype
.if ebx>=sizeoftype
push lpBuf
.else
push 0
.endif
push nID
push @hDlg
call SetDlgItemText
endm
.CODE
DlgShowDataProc proc @hDlg,uMsg,wParam,lParam
local @szBuf[30]:BYTE
mov eax,uMsg
.if eax==WM_SHOWDATA
;wParam 绝对地址
;lParam 选择块的结束位置
pushad
mov esi,wParam
mov eax,lParam
lea edi,@szBuf
.if dwFileType==FILE_RAM
add eax,dwRamAddress
.endif
invoke wsprintf,edi,ctext("%08X"),eax
invoke SetDlgItemText,@hDlg,1000,edi
mov ebx,dwFileSize
sub ebx,dwBlockStart
invoke format_int,edi,FM_UCHAR,esi
__settext 1001,eax,1
invoke format_int,edi,FM_CHAR,esi
__settext 1002,eax,1
invoke format_int,edi,FM_USHORT,esi
__settext 1003,eax,2
invoke format_int,edi,FM_SHORT,esi
__settext 1004,eax,2
invoke format_int,edi,FM_DWORD,esi
__settext 1005,eax,4
invoke format_int,edi,FM_LONG,esi
__settext 1006,eax,4
invoke format_int,edi,FM_UINT64,esi
__settext 1007,eax,8
invoke format_int,edi,FM_INT64,esi
__settext 1008,eax,8
invoke format_int,edi,FM_FLOAT,esi
__settext 1009,eax,4
invoke format_int,edi,FM_DOUBLE,esi
__settext 1010,eax,8
popad
.elseif eax==WM_CLOSE
invoke DestroyWindow,@hDlg
mov g_hDlg_Data,0
.elseif eax==WM_INITDIALOG
mov eax,lpMemFile
add eax,dwCurPos
invoke SendMessage,@hDlg,WM_SHOWDATA,eax,dwCurPos
.else
xor eax,eax
ret
.endif
mov eax,TRUE
ret
DlgShowDataProc endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -