最近在用SDK写俄罗斯的时候遇到了很多问题 ...点亮GDI盲区值得看

1 . 有效区域无效区域

调用InvalidateRect之后会使矩形区域编程无效区域 会导致指定区域重绘 如果不调用 ValidateRect那么 就会导致那个矩形区域无法绘制

2. 句柄问题 用完一定要释放 我在做俄罗斯的过程中 发现运行一段时间后 就出现一场 整个屏幕 卡住并且运行停止 结果Debug了 2天 没结果

最后终于明白原来是CreateCompatibleDC DC没释放

要释放如果不的话 你的gdi对象数目会不停的增加 到了10000就崩掉了 也就出现了我的程序崩溃 不断刷屏

如果GetDC那么 一定要 ReleaseDC释放 DC

如果CreateCompatibleDC那么 一定要 调用DeleteDC

如果GDI对象 例如 画刷位图 。。。。用完之后一定要 DeleteObject 删除 GDI对象

3. 在从欢迎界面 进入游戏界面的时候 发送WM_PAINT消息的问题 。。。我们会发现 发送了WM_PAINT消息但是 却不能按照我们的要求 绘制指定的界面

但是只要窗体一被遮住问题立马解决 ,这个问题很纠结 原理我也不清楚(高手解答。。。。。嘿嘿)

这时候 解决的方法是我们自定义一个 背景绘制的消息处理 。。 然后在WM_自定义里面 发送WM_PAINT消息 那么 就可以间接的实现界面的切换功能

4. 所谓的虚拟界面 就是通过位图实现按钮的功能 比如说 一个Button 我们只需要绘制2张不同颜色的图片 然后响应WM_MOUSEMOVE喝 WM_LBUTTON事件

进行2张位图的切换 就可以完成虚拟界面 其实SDK很多时候都用到这个

以上是我1星期的 经验虽然不专业但是 希望能帮助大家 。。。。错误的地方高手指出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值