从零开始WindowsAPI编程---Windows消息的处理机制

必须注意的几点:

1. 消息的处理方式
   Windows系统对消息有两种处理方式:一是直接用消息作为参数调用WndProc;二是把消息加入消息队列。
所以无论是GetMessage()还是PeekMessage()都不可能接收到所有的消息,而只能接收到被放到消息队列里
的消息。Windows系统可以在任何时候调用WndProc()而不必程序请求。例如:CreateWindow()的时候会用
WM_CREATE消息调用WndProc....

当然DispatchMessage()的请求也会使得Windows系统调用WndProc. 而且Dispatch()在消息处理完成之前不会返回。

2. 关于WM_PAINT消息
当窗口无效时系统向窗口的消息队列加入WM_PAINT消息。此消息必须被处理,并且处理后把窗口Validate,否则该消息
在队列中无法消除,从而导致程序一直在GetMessage(WM_PAINT), WndProc(WM_PAINT),.....。另一种解决方法是
让DefWindowProc()处理WM_PAINT消息,使得窗口Validated.

3.关于DefWindowProc()
此函数必不可少,它会自动处理某些消息,而这些消息如果不正确处理会导致程序不正常。

4.关于WM_DESTROY消息
此消息必须有程序员自己处理,一般是PostQuitMessage(0);否则创口被销毁了,而程序仍在运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值