一般用CDC时,都是选中Pen或Brush时保存原来的数据。
然后画完之后,再SelectObject恢复。但我在画完之后不调用SelectObject恢复原来的Pen之类的,
看样子也没有什么特别的情况发生。这样是不是不用恢复,可以简单很多
然后画完之后,再SelectObject恢复。但我在画完之后不调用SelectObject恢复原来的Pen之类的,
看样子也没有什么特别的情况发生。这样是不是不用恢复,可以简单很多
解决方案 »
- MFC打印和打印机设备的关系问题
- 求救:帮忙看下一句代码含义!
- 做了好几年软件开发,现在开饭馆
- 很弱的问题?
- 如何获取进程此时占用CPU时间
- 求助:CDialogBar在文档中的为何是灰色的?(不可用状态)
- 我想把手机与台式机的串口相连,在PC上看手机的短信息,请问谁知道短信息的发送数据格式?怎样解决为好?
- 如何从命令行打开iPhone文件夹?
- 用VS做的MFC,生成.exe文件后可以正常进行,我将它.exe加入到开机自启项以后为什么无法加载图片进来?图片的地方全是空白?
- 大家来提议,把CSDN里的精华弄成光盘
- vs2010不能用vs2008生成的库吗
- 采用异步I/O,readfile()从串口读取数据不全?
An application should always replace a new object with the original, default object after it has finished drawing with the new object.
不过上面的前辈讲会造成泄露、还会产生上万个,是不是有些夸张啊毕竟我用的CPen之类的声明的是局部变量,Ondraw函数结束后是会自动释放的吧。
就算不把原来的oldPen选择回去(SelectObject),也没有什么问题吧
请前辈指点,谢谢!
还有补充一下:
如果GDI对象如果被选进的是内存DC,当内存DC被DeleteDC后,DeleteObject是成功
我看过很多人家的双缓冲画图代码最后都有用SelectObject恢复原来的,然而我觉得这种情况是不必的,因为都是要DeleteDC的,DeleteObject是成功。
If the function succeeds, the return value is nonzero.If the specified handle is not valid or is currently selected into a DC, the return value is zero. Windows NT/2000/XP: To get extended error information, call GetLastError.Res
Do not delete a drawing object (pen or brush) while it is still selected into a DC.When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently.