📄 on_char.asm
字号:
OnChar proto:DWORD ,:DWORD ,:DWORD
_OnChar macro
invoke OnChar,hWin,wParam,lParam
endm
.code
OnChar proc hWin,wParam,lParam
pushad
mov eax,wParam
mov esi,lpMemFile
add esi,dwCurPos
.if FLAG_ALL & FLAG_INPUTCHAR
;选中直接输入
invoke _PushUndo,esi,UNDO_INPUT,NULL ,NULL
mov [esi],al
mov eax,dwCurPos
inc eax
invoke _SetPos,eax
xor eax,eax
.elseif (al>='A' && al <='F') || (al >='0' && al<='9') || (al>='a' && al<='f')
;如果没有选中直接输入,只能输入a-f,0-9
;并且要根据输入的是高4位还是低4位进行组合
.if al>='a'
sub al,'a'-0ah
.elseif al>='A'
sub al,'A'-0ah
.else
sub al,'0'
.endif
mov ch,BYTE ptr [esi]
mov dh,ch
and ch,0f0h;清空低4位
and dh,00fh;清空高4位
invoke _PushUndo,esi,UNDO_INPUT,NULL ,NULL
.if FLAG_ALL & FLAG_INPUTLOWBYTE
or ch,al
mov eax,dwCurPos
inc eax;正在输入的是低4位,输入后要把光标后移一位
mov [esi],ch
invoke _SetPos,eax
and FLAG_ALL,not FLAG_INPUTLOWBYTE
.else
shl al,4
or al,dh
mov ch,al
mov [esi],ch
call _ReDraw
or FLAG_ALL, FLAG_INPUTLOWBYTE
.endif
.endif
popad
ret
OnChar endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -