--- title: 响应按键输入 updated: 2022-01-20 03:20:40Z created: 2022-01-20 02:51:56Z --- `ctrl.wndproc = function(hwnd,message,wParam,lParam){}` 处理控件的消息回调 # 输入法的影响 中文输入法会影响条件判断,在不需要的场合要进行屏蔽,可以通过`key.capsLk()`屏蔽, 或`key.ime.setOpenStatus(0)//避免输入法干扰`, ==最优解可能是==`ctrl.disableInputMethod()`,基于edit控件的都支持: ```js disableInputMethod = function(){ ::Imm32 := ..raw.loadDll("Imm32.dll"); var imc = ::Imm32.ImmGetContext(owner.hwnd); if (imc) { ::Imm32.ImmAssociateContext(owner.hwnd,null); ::Imm32.ImmReleaseContext(owner.hwnd,imc); } }; ``` 以上方法可配合`message == 0x102/*_WM_CHAR*/`对输入字符进行过滤 [编辑框数据有效性判断](编辑框数据有效性判断.md) 中编辑框激活后屏蔽中文等非eng输入法以避免非法字符的输入 # 字符类 `message == 0x102/*_WM_CHAR*/`只能过滤==CHAR==,对控制类、功能类按键无效, # 非字符类 此类按键的过滤需要使用`message == 0x101/*_WM_KEYUP*/`,即==按键消息==。 # 非按键输入 通过鼠标等的输入无法通过按键捕获,需要额外处理