⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 on_char.asm

📁 一个十六进制编辑器源代码,cool!
💻 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 + -