虚心请教.急! 肯定是你的SelectObject和DeleteObject的使用有问题,凭现象只能猜测!把代码贴出来诊断一下! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建的每个新字体在使用完后一定要显示删除,不然它所占用的资源不被释放,在每次使用完pNewFont后,用pNewFont->DeleteObject()显示删除创建的字体对象。ok! 肯定是你的SelectObject和DeleteObject的使用有问题,凭现象只能猜测!把代码贴出来诊断一下! 但是我确实用DeleteObject()删除了字体对象的呀,源程序思想大致如下:为新字体申请内存 pNewFont=new CFont;创建新字体 pNewFont->CreateFontIndirect(&logfont);原来字体压入堆栈 PushFont(pCurrentFont);选择新字体 pDC->SelectObject(pNewFont); pCurrentFont=pNewFont;重新选择老字体删除当前字体 pCurrentFont->DeleteObject();delete pCurrentFont;从堆栈中弹出原字体 pCurrent=PopFont();pDC->SelectObject(pCurrentFont);以上代码是简写。当出现问题时发现pDC->SelectObject(pNewFont);的返回值为NULL,why? Sorry!这么久才看到这个帖子!你的:选择新字体 pDC->SelectObject(pNewFont); pCurrentFont=pNewFont;这一句没有对pDC->SelectObject(pNewFont);函数的返回值进行保存,不是你自己创建的pCurrentFont;写一个规范的流程:{ CFont fontNew; fontNew.CreateFontIndirect(...);//创建新字体 CFont* pOldFont = (CFont*)(pDC->SelectObject(&fontNew));//选择新字体 ... pDC->SelectObject(pOldFont);//恢复旧字体 fontNew.DelectObject();//删除新字体}你的错误不是压入堆栈错,是没有保存应当保存的原有字体!我的代码只是流程,有关字体变量的声明可以是成员变量,也可以是new出来的但有注释的四行的先后顺序不能错! 请问一下程序中不释放资源会怎么样? 为什么释放对象不成功啊 简单问题,请看以下代码 请问子对话框如何获得主对话框的数据成员? 微软是如何将文本文件压缩成码表文件的。*.TXT->*.MB 大哥们,这样的问题真的没办法解决了吗? 请问在MFC程序中(一个exe程序)加入ATL支持并实现一个自动化接口后,为何在客户端程序中(也是一个exe程序)无法查找到该接口中的方法? 本地多个进程连接同一个端口问题? 怎么能取得google搜索栏的历史记录,请教~! 请高手们赐教:怎么屏蔽掉对话框上得回车键! 如何截取应用程序的打印输出 真的好好急!关于MFC下使用fstream,我给好多的分!!!
为新字体申请内存 pNewFont=new CFont;
创建新字体 pNewFont->CreateFontIndirect(&logfont);
原来字体压入堆栈 PushFont(pCurrentFont);
选择新字体 pDC->SelectObject(pNewFont); pCurrentFont=pNewFont;
重新选择老字体
删除当前字体 pCurrentFont->DeleteObject();delete pCurrentFont;
从堆栈中弹出原字体 pCurrent=PopFont();pDC->SelectObject(pCurrentFont);
以上代码是简写。
当出现问题时发现pDC->SelectObject(pNewFont);的返回值为NULL,why?
你的:
选择新字体 pDC->SelectObject(pNewFont); pCurrentFont=pNewFont;
这一句没有对pDC->SelectObject(pNewFont);函数的返回值进行保存,不是你自己创建的pCurrentFont;
写一个规范的流程:
{
CFont fontNew;
fontNew.CreateFontIndirect(...);//创建新字体
CFont* pOldFont = (CFont*)(pDC->SelectObject(&fontNew));//选择新字体
... pDC->SelectObject(pOldFont);//恢复旧字体
fontNew.DelectObject();//删除新字体
}
你的错误不是压入堆栈错,是没有保存应当保存的原有字体!
我的代码只是流程,有关字体变量的声明可以是成员变量,也可以是new出来的但有注释的四行的先后顺序不能错!