《MFC windows程序设计》中关于GDI对象的选定

本文介绍Windows编程中GDI对象的管理方法,包括如何保存和恢复默认对象,以及通过选择备用对象来更新设备描述表的方式。文章还讨论了在堆上创建和删除画笔画刷的正确实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.2.12

取消对GDI对象的选定

void CMainWindow::OnPaint

{

CPaintDC dc(this);

CBrush brush(RGB(255, 0, 0));

dc.SelectObject(&brush);

dc.Ellipse(0, 0, 200, 100);

}

析构顺序:先Cbrush再Cpaint;

大部分windows编程人员习惯上首先保存每种对象类型首次调用SelectObject时返回的指针,然后用这个指针重选默认对象。

CPen pen(PS_SOLID, 1, RGB(255, 0, 0));

CPen *pOldPen = dc.SelectObject(&pen);

CBrush brush(RGB(255, 0, 0));

CBrushpOldBrush = dc.SelectObject(&brush);

.

.

.

dc.SelectObject(pOldPen);

dc.SelectObject(pOldBrush);

还有一种同样有效的方法是将备用对象选入设备描述表以取代之前选入的对象。

CPen pen(PS_SOLID, 1, RGB(255, 0, 0));

dc.SelectObject(&pen);

CBrush brush;

dc.SelectObject(&brush);

.

.

.

dc.SelectStockObject(BLACK_PEN);

dc.SelectStockObject(WHITE_PEN);

取消选定选入的GDI对象而实现清除设备描述表仍然是windows编程中的惯例。

在堆上创建和删除画笔画刷。

CPen *pen = new CPen(PS_SOLID, 1, RGB(255, 0, 0));

CPen *pOldPen = dc.SelectObject(pen);

dc.SelectObject(pOldPen);

delete pen;

有可能想到这样一条语句去取消选定并删除该画笔:

Delete dc.SelectObject(pOldPen);

这种方法对画笔有用,对画刷不管用。因为同时创建两个画刷时,它们共用一个HBRUSH。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值