font.CreatePointFont(150, "lefttop font");
pOldFont = dc.SelectObject(&font);
dc.TextOut(rect.left, rect.top, strToTextOut);

font.CreatePointFont(250, "lefttop font");    //开始我以为是这个名字的问题,把这个名字改为其他的一样不行。但去掉这一行可以执行成功。
dc.SelectObject(&font);
dc.TextOut(rect.left, rect.bottom - 30, strToTextOut);
这是写在ONPAINT里的一段代码,改变字体在不同的地方显示。
我在第二次改变字体的时候出错。请指教

解决方案 »

  1.   

    另外定义一个CFont font2;
              font2.CreatePointFont(250, "lefttop font");
                dc.SelectObject(&font2);
                dc.TextOut(rect.left, rect.bottom - 30, strToTextOut);
      

  2.   

    顺便也问一下,有没有办法修改CFont对象的属性,
    比如说,
    Create()结束以后,想要再创建一种跟这个差不多的字体,只需要改变一种或两种属性,
    只能用Create()再全部重写一遍么?
      

  3.   

    要先font.DeleteObject(), 再重新Create(), DeleteObject()前要先从DC中选出来我不知道有什么修改的办法, 但你可以把FONT属性保存在LOGFONT结构中, 修改结构成员后再用CreateFontIndirect()创建.
      

  4.   

    是的,改个字体大小之类的都需要重新建立.你在font.CreatePointFont之前加一句font.DeleteObject();
      

  5.   


                font.CreatePointFont(150, "lefttop font");
                pOldFont = dc.SelectObject(&font);
                dc.TextOut(rect.left, rect.top, strToTextOut);
                
    dc.SelectObject(pOldFont );
    font.DeleteObject();
                font.CreatePointFont(250, "lefttop font");    //开始我以为是这个名字的问题,把这个名字改为其他的一样不行。但去掉这一行可以执行成功。
                pOldFont = dc.SelectObject(&font);
                dc.TextOut(rect.left, rect.bottom - 30, strToTextOut);
    font已被选进DC,不能对其Create。