在WM_PAINT处理函数OnPaint()中未构造CPaintDC对象造成死循环

在程序中动态创建了一个基类为CWnd的窗口,由于VC不知怎么回事添加不了消息处理,所以就自已增加了WM_PAINT消息映射,悲剧发生了,一运行就死循环,调试知不断的调用了OnPaint()函数,把OnPaint()函数缩减就几行代码还是看不出有什么漏洞的。

这个问题检查了一早上差点无果,突然想起来以前在用C写windows程序的时候,处理WM_PAINT消息时有beginpaint() 和endpaint()的调用,作用是通知程序无效区已经有效等,如果不调用系统将不断的发送WM_PAINt消息,回来代码一眼看到第一行代码:CClientDC dc(this),,暗自高兴了一下,原来是我构造错对象了,应该构造CPaintDC对象,这个对象在构造函数中会调用beginpaint,在析构的时候会调用endpaint,这样无效区就会恢复有效。而CClientDC没有这个功能。

有时越是简单的问题获是不容易查出啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值