高弹棉面料女裤:易语言拦截窗口消息的示例
来源:百度文库 编辑:九乡新闻网 时间:2024/05/05 01:33:48
易语言等可视化编程已经将视窗消息封装为对象的属性、方法和事件。
当我们在窗口中按下鼠标左键,欲出现信息“你点击了窗体”,在易语言中是这样编写的: 子程序:__启动窗口_鼠标左键被按下返回值类型:逻辑型 参数:横向位置 数据类型:整数型参数:纵向位置 数据类型:整数型参数:功能键状态 数据类型:整数型 信息框 (“你点击了窗体”, 0, ) 但是如果不用“__启动窗口_鼠标左键被按下”事件能否达到这样的结果?由于对象的事件也只不过是视窗消息的封装,所以我们可以用视窗消息实现这样的功能。
我们需要用到两个API函数:拦截窗口消息函数SetWindowLongA(置窗口信息)、回调函数CallWindowProcA(调窗口信息)。SetWindowLongA用于随时拦截各种窗口消息,通过判断不同的消息类型执行不同的代码(类似于易语言“事件”的作用);CallWindowProcA用于没有出现需要的消息类型时,将程序的消息返回到操作系统中,使操作系统继续用SetWindowLongA来拦截窗口消息。
请看下面的示例代码: Dll命令:置窗口信息返回值类型:整数型 Dll库文件名:user32.dll 在Dll库中的命令名:SetWindowLongA 参数:窗口句柄 数据类型:整数型 参数:取回信息 数据类型:整数型 参数:信息新值 数据类型:子程序指针 Dll命令:调窗口信息返回值类型:整数型 Dll库文件名:user32.dll 在Dll库中的命令名:CallWindowProcA 参数:过程指针 数据类型:整数型 参数:过程句柄 数据类型:整数型 参数:消息类型 数据类型:整数型 参数:特定信息1 数据类型:整数型 参数:特定信息2 数据类型:整数型常量:窗信_系统命令 值:274 备注:WM_SYSCOMMAND 常量:窗信_鼠标按下 值:513 备注:WM_LBUTTONDOWN 窗口程序集:窗口程序集1 程序集容器:指针 数据类型:子程序指针程序集容器:旧窗口信息 数据类型:整数型程序集容器:旧句柄信息 数据类型:整数型 子程序:__启动窗口_创建完毕 指针 = 回调信息旧窗口信息 = 置窗口信息 (取窗口句柄 (), -4, 指针) 子程序:回调信息返回值类型:整数型备注:回调列表框 参数:窗口句柄 数据类型:整数型参数:信息类型 数据类型:整数型参数:值1 数据类型:整数型参数:值2 数据类型:整数型 判断 (信息类型 = #窗信_鼠标按下) 信息框 (“你点击了窗体”, 0, ) 判断 (信息类型 = #窗信_系统命令) 如果 (值1 = 61536) 信息框 (“你点击了关闭按钮”, 0, ) 否则 如果 (值1 = 61488) 信息框 (“你点击了最大化按钮”, 0, ) 否则 如果 (值1 = 61472) 信息框 (“你点击了最小化按钮”, 0, )否则如果结束 如果结束 如果结束返回 (调窗口信息 (旧窗口信息, 窗口句柄, 信息类型, 值1, 值2)) 判断结束返回 (0)子程序:_按钮1_被单击 结束 ()
当我们在窗口中按下鼠标左键,欲出现信息“你点击了窗体”,在易语言中是这样编写的: 子程序:__启动窗口_鼠标左键被按下返回值类型:逻辑型 参数:横向位置 数据类型:整数型参数:纵向位置 数据类型:整数型参数:功能键状态 数据类型:整数型 信息框 (“你点击了窗体”, 0, ) 但是如果不用“__启动窗口_鼠标左键被按下”事件能否达到这样的结果?由于对象的事件也只不过是视窗消息的封装,所以我们可以用视窗消息实现这样的功能。
我们需要用到两个API函数:拦截窗口消息函数SetWindowLongA(置窗口信息)、回调函数CallWindowProcA(调窗口信息)。SetWindowLongA用于随时拦截各种窗口消息,通过判断不同的消息类型执行不同的代码(类似于易语言“事件”的作用);CallWindowProcA用于没有出现需要的消息类型时,将程序的消息返回到操作系统中,使操作系统继续用SetWindowLongA来拦截窗口消息。
请看下面的示例代码: Dll命令:置窗口信息返回值类型:整数型 Dll库文件名:user32.dll 在Dll库中的命令名:SetWindowLongA 参数:窗口句柄 数据类型:整数型 参数:取回信息 数据类型:整数型 参数:信息新值 数据类型:子程序指针 Dll命令:调窗口信息返回值类型:整数型 Dll库文件名:user32.dll 在Dll库中的命令名:CallWindowProcA 参数:过程指针 数据类型:整数型 参数:过程句柄 数据类型:整数型 参数:消息类型 数据类型:整数型 参数:特定信息1 数据类型:整数型 参数:特定信息2 数据类型:整数型常量:窗信_系统命令 值:274 备注:WM_SYSCOMMAND 常量:窗信_鼠标按下 值:513 备注:WM_LBUTTONDOWN 窗口程序集:窗口程序集1 程序集容器:指针 数据类型:子程序指针程序集容器:旧窗口信息 数据类型:整数型程序集容器:旧句柄信息 数据类型:整数型 子程序:__启动窗口_创建完毕 指针 = 回调信息旧窗口信息 = 置窗口信息 (取窗口句柄 (), -4, 指针) 子程序:回调信息返回值类型:整数型备注:回调列表框 参数:窗口句柄 数据类型:整数型参数:信息类型 数据类型:整数型参数:值1 数据类型:整数型参数:值2 数据类型:整数型 判断 (信息类型 = #窗信_鼠标按下) 信息框 (“你点击了窗体”, 0, ) 判断 (信息类型 = #窗信_系统命令) 如果 (值1 = 61536) 信息框 (“你点击了关闭按钮”, 0, ) 否则 如果 (值1 = 61488) 信息框 (“你点击了最大化按钮”, 0, ) 否则 如果 (值1 = 61472) 信息框 (“你点击了最小化按钮”, 0, )否则如果结束 如果结束 如果结束返回 (调窗口信息 (旧窗口信息, 窗口句柄, 信息类型, 值1, 值2)) 判断结束返回 (0)子程序:_按钮1_被单击 结束 ()
易语言拦截窗口消息的示例
易语言:发送消息() 向指定窗口中的控件发送消息
易语言发送消息参数
易语言:文本控件的常用消息及对应作用
易语言 发送消息/投递消息 常用参数
E【易语言】 Win 消息大全
哲学分析示例: 语言的与现象学的
易语言扩展界面支持库 工具条 窗口单元 - 易语言电脑技术 - 高级电脑技术 - 挥剑斩浮...
在消息窗口中显示进度条 - SUNSTONE的Delphi笔记 - CSDN博客
窗口的陽光
冲出你的窗口
窗口。。。
一些简单的公式示例
消息称上海重庆房产税试点获批 等待两会窗口
Window 中窗口的层次关系以及窗口的属性
自适应图片大小的弹出窗口
网页弹出式窗口的制作方法
守在窗口的父母
守在窗口的父母
认识世界的窗口-搜索引擎
jQuery的弹出窗口 ColorBox
善良是心灵的窗口
网页弹出式窗口的制作方法
VC浮动窗口的实现