3.3.3 处理重要的事件
Windows是一个事件驱动的操作系统,对消息的处理是Windows编程的核心部分。3.3.2小节已经介绍过,在窗口过程中用switch-case分支语句实现对每种消息的不同操作,对于不同的消息,它们的wParam和lParam参数代表的意思也不一样,而Windows消息又有成百上千种,因此,在编写Windows应用程序的时候,最好能有WindowsAPI手册方便查阅。
本小节将介绍几种主要的Windows消息和通常对它们的处理方法。对于其他消息的处理方法也可以以此为借鉴。
1.WM_CLOSE的处理方法
该消息在单击窗口关闭按钮时被发送。此时窗口并没有被真的销毁,因此一般应用程序的做法是在处理这个消息的时候弹出一个提示框询问是否关闭,如果选择“是”,那么就关闭,否则不做任何处理。实例3-3显示了WM_CLOSE的一般处理方法。
实例3-3:WM_CLOSE的一般处理方法。
case WM_CLOSE: |
2.WM_MOUSEMOVE的处理方法
当鼠标在窗口区域中移动的时候,系统就会向窗口发送WM_MOUSEMOVE消息。鼠标的坐标信息被作为参数放在lParam中,其中x坐标放在lParam的低16位中,y坐标信息放在lParam的高16位中,鼠标的按键消息放在wParam中。wParam的按钮编码如表3-6所示。
表3-6 wParam的按钮编码
![]() |
下面的实例显示了WM_MOUSEMOVE消息的一般处理方式。
实例3-4:WM_MOUSEMOVE消息的一般处理方式。
case WM_MOUSEMOVE: |
程序先用LOWORD和HIWORD取得参数lParam的低16位和高16位,然后把它们转化为横坐标和纵坐标,就可以进行相应的处理了。
鼠标的x,y坐标不是相对于整个屏幕而言的,而是相对于应用程序窗口而言的。当鼠标移动到应用程序窗口的左上角时,x和y的值都为0。
3. WM_COMMAND方法
如果用户选择菜单命令或者一个控件向父窗口发送通知消息的时候,窗口就会收到一个WM_COMMAND消息。伴随WM_COMMAND消息的lParam参数存放的是子控件窗口句柄,wParam的高16位存放的是子控件的通知代码,wParam的低16位存的是菜单命令消息。下面的实例展示了WM_COMMAND消息的一般处理过程。
实例3-5:WM_COMMAND消息的一般处理过程。
case WM_COMMAND: |
从上面的代码可以看出对于具体的菜单命令也采用switch-case分支进行判断。对于不同的菜单命令采取不同的处理。
Windows的消息有很多,它们都以WM_为前缀,本节不能对所有的消息处理过程一一介绍。对于其他的消息的意义和处理方法,可以参考MSDN。
| 回书目 上一节 下一节 |
|
· Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. · 08年5月各大网上书店及.. |
· 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. |
|
||||
| · ASP.NET开发教程 · 专题:ASP.NET 2.0基础.. · LAMP技术精解 · 服务器节能与绿色IT · ARP攻击防范与解决方案 · Linux 集群技术专题 · Windows集群服务应用 · CISSP认证成长之路 |
· SQL Server 2008/2005.. · SQL Server入门到精通 · 网络工程师职业规划与.. · 浏览器的战国时代 · 运营商封堵ADSL共享 中.. · 微软出价446亿美元收购.. · 技术人求职简历完备手册 · 开源虚拟化技术Xen |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Apache技术专题 · Windows集群服务应用 · 国际文档格式标准开战 |
· 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · 了解统一威胁管理(UTM).. · 专题:AIX操作系统管理.. · 访问控制列表(ACL)介绍 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · 三层交换技术专题 · Apache技术专题 · 企业数据恢复指南 · Windows集群服务应用 |
· 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 · ASP.NET开发教程 · PHP开发应用手册 |
|||