易语言没有直接内置的“输入回车弹出下拉”的单一控件,但组合框本身就是“编辑框+下拉列表”的整体控件。只需通过子类化拦截其内部编辑框的回车键,就能实现你要的效果。 只需放一个组合框1,类型设置为“可编辑下拉式”,不用任何模块,试下看看
| 窗口程序集名 | 保 留 | 保 留 | 备 注 | | 窗口程序集_启动窗口 | | | | | 变量名 | 类 型 | 数组 | 备 注 | | 原编辑框过程 | 整数型 | |
|
| 取窗口信息_ | 整数型 | | |
| user32.dll | |
| GetWindowLongA | |
| 窗口句柄 | 整数型 | | | | 索引 | 整数型 | | |
|
| 置窗口信息_ | 整数型 | | |
| user32.dll | |
| SetWindowLongA | |
| 窗口句柄 | 整数型 | | | | 索引 | 整数型 | | | | 新值 | 整数型 | | |
|
| 调用窗口过程_ | 整数型 | | |
| user32.dll | |
| CallWindowProcA | |
| 前过程 | 整数型 | | | | 窗口句柄 | 整数型 | | | | 消息 | 整数型 | | | | 参数1 | 整数型 | | | | 参数2 | 整数型 | | |
|
| 取子窗口_ | 整数型 | | |
| user32.dll | |
| GetWindow | |
| 窗口句柄 | 整数型 | | | | 关系 | 整数型 | | |
|
| 发送消息_ | 整数型 | | |
| user32.dll | |
| SendMessageA | |
| 窗口句柄 | 整数型 | | | | 消息 | 整数型 | | | | 参数1 | 整数型 | | | | 参数2 | 整数型 | | |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 组合框句柄 | 整数型 | | | | 编辑框句柄 | 整数型 | | |
组合框1. 加入项目 (“项目A”, )组合框1. 加入项目 (“项目B”, )组合框1. 加入项目 (“项目C”, )组合框句柄 = 组合框1. 取窗口句柄 () 编辑框句柄 = 取子窗口_ (组合框句柄, 5 ) 如果真 (编辑框句柄 ≠ 0 )  原编辑框过程 = 置窗口信息_ (编辑框句柄, -4, 到整数 (&编辑框子过程 )) 输出调试文本 (“子类化安装成功,编辑框句柄:” + 到文本 (编辑框句柄 ))  |
| 编辑框子过程 | 整数型 | | |
| 句柄 | 整数型 | | | | 消息 | 整数型 | | | | 参数1 | 整数型 | | | | 参数2 | 整数型 | | | |
如果真 (消息 = 256 且 参数1 = 13 ) 输出调试文本 (“在组合框编辑框中按下回车,弹出下拉列表。”) 发送消息_ (取子窗口_ (组合框1. 取窗口句柄 (), 5 ), 335, 1, 0 ) 返回 (0 )返回 (调用窗口过程_ (原编辑框过程, 句柄, 消息, 参数1, 参数2))编辑框句柄 = 取子窗口_ (组合框1. 取窗口句柄 (), 5 ) 如果真 (编辑框句柄 ≠ 0 且 原编辑框过程 ≠ 0 ) 置窗口信息_ (编辑框句柄, -4, 原编辑框过程 ) 输出调试文本 (“子类化已卸载。”)
|