untitled-36.txt

来自「mfc 教程」· 文本 代码 · 共 29 行

TXT
29
字号
                                                                    第2章在窗口中绘图65
表以取代当前选人的对象。前一种方法由下面的程序代码说明:
      CPen Pen(PS.SOLID,工, RGB(255, 0, 0》;
      CPen。poldPen= dc.Selectobject(&pen);
      CBrush brush(RGB(0,0,255》;
      CBru。h。 p01dBrush= dc、Selectobject(&brush);
      dc.Selectobject(pOldPen);
      dc.Selectobject(p01dBrush);
    第二种方法如下所示:
      CPen Pen(PS.SOLID,工, RGB(255, O, 0》;
      dC.SelectobjCCt(&ppn);
      CBrushbrush(RGB(0, 0, 255》;
      dc.Selectobject(&brush);
      dc.Selectstockobject(BLACK.PEN);
      dc.Selectstockobject(WHITE.BRUSH);
    一个问题是为什么要这样做呢?实际上这是不必要的。在最新版的Windows中,允许
GDI对象在设备描述表释放的前一刻被删除并没有什么不好的影响,尤其是当你能确保在
此期间没有画图程序执行时更是如此。但是通过取消选定选人的GDI对象而实现清除设备
描述表仍然是Windows编程中的惯例。同时这也是一种好习惯,本书始终遵循这种惯例。
    相应地,有时也在堆上创建GDI对象,如下所示:
      CPen。 pPen= new CPen(PS.SOLID, l, RGB(255, 0, 0》;
      CPen。 pOldPen= dc.Selectob〕ect(pPen);
    在某一时刻,必须将该画笔从设备描述表中选出并删除。完成该任务的程序代码可能
是这样的:
      dc.Selectobject(p01dPen);
        delete pPen于
    由于Selectobject函数返回一个指向被选出设备描述表的对象的指针,因此很容易让人
想到用一条语句取消选定并删除该画笔:

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?