在栈上创建CPaintDC对象是良好的编程习惯,这样当OnPaint结束时将自动调用他们的析构函数。如果用new操作符来实例化一个CPaintDC对象,在OnPaint结束之前删除那个对象很重要。否则::EndPaint将不会被调用。
Visual C++有一种简单的方法用来确定是否成功删除了画笔,画刷和其他资源:只要在调试状态下运行程序。在应用程序终止时,没有释放的资源会显示在调试窗口中。
在最新版本的Windows中,允许GDI对象在设备描述表释放的前一刻被删除并没有什么不好的影响,尤其是当你能确保在此期间没有画图程序执行时更是如此。但是通过取消选定选入的对象而实现清除设备描述表仍然是Windows编程中的惯例。同时也是一种好习惯。