VC API函数 DeleteObject的理解

来源:百度知道 编辑:UC知道 时间:2024/06/15 03:37:20
对VC中API函数 DeleteObject的理解总是有误,不知道哪位同学可以给予详细解释一下。谢谢!
以下为两段测试代码:
(1):
hbrush=CreateSolidBrush(RGB(255,0,0));
SelectObject(hdc,hbrush);
Rectangle(hdc,0,0,100,100);//第一个矩形;
DeleteObject(hbrush);
Rectangle(hdc,25,25,125,125);//第二个矩形;
(2):
hbrush=CreateSolidBrush(RGB(255,0,0));
SelectObject(hdc,hbrush);
DeleteObject(hbrush);
Rectangle(hdc,25,25,125,125);//第二个矩形;
在这两段代码中,第一段代码运行后第二个矩形为红色画刷,第二个代码运行后为系统默认的白色画刷;
第一个代码运行后为什么是红色的,既然GDI对象已经删除,设备描述表已经和hbrush断开联系,应该为白色的才对,好像有惯性一般,麻烦个位给解释一下。

有一点要说明,一般在使用SelectObject都将原来的资源保存起来,如hbrush *old=SelectObject(hdc,hbrush),想还原时再将调用此函数 SelectObject(hdc,*old);至于它会不会自动去调用默认刷我不太清楚,还有上面两个语法上不一定成功,只是理论上的,你知道MFC有些对象如CPaintDC,CDC等在这方面的处理是相当方便的,但也是这样做的,欢迎交流