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