马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
//暂时转让控制权,以便让 Windows 操作系统有机会处理其它的如用户键盘或鼠标输入等事件。直到操作系统处理并发送完程序队列中的所有事件后,命令才会返回。
功能 处理事件()
变量 MSG = 数组("hwnd" = 数组("long" = 1, "value" = 0), "message" = 数组("long" = 1, "value" = 0), "wParam" = 数组("long" = 1, "value" = 0), "lParam" = 数组("long" = 1, "value" = 0), "time" = 数组("long" = 1, "value" = 0), "x" = 数组("long" = 1, "value" = 0), "y" = 数组("long" = 1, "value" = 0))
变量 结构体地址_MSG = 结构体申请内存(MSG)
如果(结构体地址_MSG == 0)
返回
结束
循环(动态库调用("user32.dll", "long", "PeekMessageW", "long", 结构体地址_MSG, "long", 0, "long", 0, "long", 0, "long", 1) != 0)
动态库调用("user32.dll", "long", "DispatchMessageW", "long", 结构体地址_MSG)
动态库调用("user32.dll", "long", "TranslateMessage", "long", 结构体地址_MSG)
结束
结构体释放内存(结构体地址_MSG)
结束
====================================================================================================================================================================================
由易语言代码翻译而来,有BUG我不管。
在界面事件使用大循环,只要在循环里加上一句 处理事件() ,就不会卡界面了。
原理就是转让控制权处理队列消息,消息处理完了返回,然后执行你的代码,所以运行速度会慢几十倍。
慎用!!有大循环死循环代码建议使用线程来处理。
如果(dllcall("user32.dll", "long", "GetInputState") != 0) //确定调用线程的消息队列中是否存在鼠标按钮或键盘消息。
处理事件()
结束
选择键鼠消息 处理事件() 可以提升一部分速度。
觉的有用就留个赞吧!
|