天狼鼠

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 47 下一页

2011年3月20日

摘要: 在windows系列上做编程,gdi是一个很重要的技术点,有很多程序在运行多次后出现异常,除了众所周知的内存泄露以外,gdi资源泄露也是一个很直接的原因.今天就把我自己在编程中总结的一些经验给大家分享,欢迎高手补充.1.Create出来的gdi对象,一定要用DeleteObject来释放,释放顺序是先Create的后释放,后Create的先释放.这里的Create指的是以它为开头的gdi函数,比如,CreateDIBitmap,CreateFont等等,最后都要调用DeleteObject来释放.2.Create出来的dc要用DeleteDC来释放,Get到的要用ReleaseDC释放.3.确 阅读全文
posted @ 2011-03-20 16:35 情有独钟 阅读(480) 评论(0) 推荐(0) 编辑

摘要: 如果你希望能够在自己的程序中表现出新意,那么你一定不会仅仅满足于MFC提供那些标准控件。这时,我们就必须自己另外多做些工作了。就改变控件外观这一点来说,主要是利用控件的自绘功能(Owner Draw)实现的。本篇将和各位一起定义一个XP风格的CXPButton按钮类,目的不在于介绍CXPButton类的使用技巧,而在于向各位阐述实现自绘按钮的方法。当然如果你觉得CXPButton有用的话,也可以把它的源文件保存下来,直接加入到自己的项目中。本篇要点:一、准备工作二、实现原理及难点三、按钮类的使用四、小结与提示五、附录 一、准备工作在开始编码之前,首先应该确定好,更准确的说应该是设计好按钮在各种 阅读全文
posted @ 2011-03-20 16:35 情有独钟 阅读(6215) 评论(0) 推荐(0) 编辑

摘要: Windows显示设备的属性,共有下面几种:位图、画刷、字体、画笔、区域。如果要设置它们到当前设备里,就需要使用SelectObject函数,比如上面介绍的字体设置,就会用到这个函数。当你创建一个位图时,这时Windows就会在内存里分配一块内存空间,用来保存位图的数据。当你创建字体时,也会分配一块内存空间保存字体。如果程序只是分配,而不去删除,就会造成内存使用越来越多,最后导到Windows这幢大楼倒下来。如果你忘记删除它,就造成了内存泄漏。因此,当你创建显示设备资源时,一定要记得删除它们啊,否则运行你的程序越长,就导致系统不稳定。记得使用DeleteObject函数去删除它们,把占用的内存 阅读全文
posted @ 2011-03-20 16:34 情有独钟 阅读(515) 评论(0) 推荐(0) 编辑

摘要: 一.什么是勾子:在Windows系统中,勾子(hook)是一种特殊的消息处理机制。勾子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的勾子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用勾子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握勾子的编程方法是很有必要的。二.勾子的类型 1.按事件分类,有如下的几种常用类型 (1) 键盘勾子和低级键盘勾子可以监视各种键盘消息。 (2) 鼠标勾子和低级鼠标勾子可以监视各种鼠标消息。 (3) 外壳勾子可以监视各种Shell事件消 阅读全文
posted @ 2011-03-20 16:34 情有独钟 阅读(396) 评论(0) 推荐(0) 编辑

摘要: 1、将Invalidate()替换为InvalidateRect() Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域内的内容,所以所需时间会少一些。虫虫以前很懒,经常为一小块区域的重画就调用Invalidate(),不愿意自己去计算需要重画的Rect,但是事实是,如果你确实需要改善闪烁的情况,计算一个Rect所用的时间比起重画那些不需要重画的内容所需要的时间要少得多。 2、禁止系统搽除你的窗口 系统在需要重画窗口的时候会帮你用指定的背景色来搽除窗口。可是,也许需要重画的区域也许非常小。或者,在你重画这些东西之间还要经过 阅读全文
posted @ 2011-03-20 16:33 情有独钟 阅读(319) 评论(0) 推荐(0) 编辑

上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 47 下一页