如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
来源:互联网 发布:淘宝店铺联盟怎么弄 编辑:程序博客网 时间:2024/06/07 02:10
Part 4:控件操作B
至于另存为图片,情况要稍微复杂一点,因为另存为图片的默认选项是BMP,特别不巧,我使用的FaceGen版本保存为BMP有BUG,不能成功保存,所以我们除了定位保存文件的路径以外,还需要对文件类型的下拉组合框(ComboBox进)行操作:
我们假设我们找到了组合框的句柄为CB_handle,我们可以用CB_SETCURSEL消息来更改当前的选项:
- CB_SETCURSEL 消息
- 描述:
- 参数:
- wParam:以0起始的待选选项的索引;如果该值为-1,将从组合框列表中删除当前选项,并使当前选项为空
- lParam:未使用。
- 返回值:
- 更改选择成功将返回所设置选项的索引号。
只要给组合框发一个CB_SETCURSEL消息,你就会发现下拉列表的选项已经改变了。
这时,只要你点保存,你就会发现,这保存的跟之前的一样啊!根本没有变!
问题在哪里?
我们用鼠标或者键盘操作一下,是没有问题的,一旦更保存类型,保存窗口里的预览也会随之变化。所以,除了CB_SETCURSEL以外,一定还缺了点儿什么。
于是,我们可以调用Spy++的消息机制查看一下手动操作时,我们的下拉组合框发生的事情,好像除了渲染和点击,没有什么特别值得注意的。
那再看看父窗体呢?好像有点儿不太一样的东西:
- CBN_SELENDOK 通知(notification code)
- 描述:当用户选择了有效的列表项时发送,提示父窗体处理用户的选择。父窗体通过WM_COMMAND消息接收这个通知。
- 参数:(作为WM_COMMAND的参数)
- wParam:LOWORD为组合框的ID. HIWORD为CBN_SELENDOK的值。
- lParam:组合框的句柄。
- CBN_SELCHANGE 通知(notification code)
- 描述:当用户更改了列表项的选择时发送,不论用户是通过鼠标选择或是通过方向键选择都会发送此通知。父窗体通过WM_COMMAND消息接收这个通知。
- 参数:(作为WM_COMMAND的参数)
- wParam:LOWORD为组合框的ID. HIWORD为CBN_SELCHANGE的值。
- lParam:组合框的句柄。
- 说明:他们是WM_COMMAND消息wParam的high word(wParam的16-31位,详情参见Part 2)的常数之一,在Python中可以用位移操作将其移动到高位上(a<<16),再用加法加上低位的内容。
继续查MSDN的资料,我们发现,对于一个有效的选择,一定会发送这两个通知,发送完CBNSELENDOK以后马上发送CBNSELCHANGE。而且,使用CBSETCURSEL消息时,CBNSELCHANGE通知是不会被送达的!
问题就在这里,加上这两个消息之后,就能正常操作下拉菜单了。完整函数如下
阅读全文
0 0
- 如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
- 如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
- 如何利用Python和win32编程避免重复性体力劳动(三)——文本框操作:WM_GETTEXT 和WM_SETTEXT
- 如何利用Python和win32编程避免重复性体力劳动(三)——文本框操作:WM_GETTEXT 和WM_SETTEXT
- 如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx
- 如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- C++学习小记:组合框的消息响应CBN_SELCHANGE和CBN_SELENDOK的区别
- 利用Python和win32编程范例——按需定制一个按键精灵
- 利用Python和win32编程范例——按需定制一个按键精灵
- select下拉列表操作,如何兼容于IE和firefox
- jQuery下拉列表框操作和排序
- Jquery操作下拉列表和复选框,自定义下拉
- javascript增删节点以及如何操作下拉列表select和option(源代码)
- python 编程 入门到实践 第四章 列表操作和元祖 (课后题加原书)
- 利用js和css实现Bootstrap下拉列表数据过滤
- date 和下拉列表
- pat 乙级 1032. 挖掘机技术哪家强(20)
- DPDK(三):使用setup.sh脚本快速构建
- STM32使用串口1配合DMA接收不定长数据,大大减轻CPU载荷。
- sql-索引的作用及其使用方法和经验
- echarts画一个折现/柱状混合图
- 如何利用Python和win32编程避免重复性体力劳动(四)——下拉列表操作:CB_SETCURSEL、CBN_SELENDOK和CBN_SELCHANGE
- 在eclipse中新建Dynamic web project时选择2.5和3.0的区别(里面涉及servlet和tomcat的问题)
- 【Java基础】八种基本数据类型--原码反码补码
- 面试题解答
- Oracle如何批量导出数据库表结构(建表语句)
- 使用百度API实现实时公交线路查询及地图显示
- 正则表达式基础
- 虚拟篇 01. Hyper-V 安装 ❀ Windows Server 2016
- 关于postgresql的注意事项