📄 conv.asm
字号:
include dw2bin.asm
include str2ascii.asm
_DlgConvProc proto :DWORD,:DWORD,:DWORD,:DWORD
_CopyDataTo proto:DWORD ,:DWORD ,:DWORD
.data
szConvType db 'Hex->DWORD',0
db 'Hex->Bin',0
db 'DWORD->Hex',0
db 'DWORD->Bin',0
db 'Str->Ascii',0
db 0
.CODE
_DlgConvProc proc uses edi @hDlg,uMsg,wParam,lParam
local @szBuf[50]:BYTE ,@szBufAsc[200]:BYTE
mov eax,uMsg
.if eax==WM_INITDIALOG
lea edi,szConvType
.while BYTE ptr [edi]
__senddlgmessage 1006,CB_ADDSTRING ,0,edi
invoke lstrlen,edi
add edi,eax
inc edi
.endw
__senddlgmessage 1006,CB_SETCURSEL
.elseif eax==WM_COMMAND
mov eax,wParam
mov edi,eax
shr eax,16
.if ax==CBN_SELCHANGE || (ax==EN_CHANGE && di==1000)
lea edi,@szBuf
__senddlgmessage 1006,CB_GETCURSEL
.if eax==0
invoke GetDlgItemText,@hDlg,1000,edi,50
invoke H2DW,edi
invoke SetDlgItemInt,@hDlg,1001,eax,TRUE
.elseif eax==1
invoke GetDlgItemText,@hDlg,1000,edi,50
invoke H2DW,edi
invoke dw2bin,eax,edi
invoke SetDlgItemText,@hDlg,1001,edi
.elseif eax==2
invoke GetDlgItemInt,@hDlg,1000,0,TRUE
invoke wsprintf,edi,addr szFmHexD,eax
invoke SetDlgItemText,@hDlg,1001,edi
.elseif eax==3
invoke GetDlgItemInt,@hDlg,1000,0,TRUE
invoke dw2bin,eax,edi
invoke SetDlgItemText,@hDlg,1001,edi
.elseif eax==4
invoke GetDlgItemText,@hDlg,1000,edi,50
mov @szBufAsc,0
invoke str2ascii,edi,addr @szBufAsc
invoke SetDlgItemText,@hDlg,1001,addr @szBufAsc
.endif
.endif
.elseif eax==WM_CLOSE
invoke ShowWindow,@hDlg,SW_HIDE
.else
xor eax,eax
ret
.endif
mov eax,TRUE
ret
_DlgConvProc endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -