改变一个控制的字体,需要删除以前的字体吗?

zjy 2000-02-29 05:59:00
改变一个控制的字体尺寸.
HFONT hFont,hNewFont;
LOGFONT logFont;
hFont = (HFONT)::SendMessage(hWnd, WM_GETFONT, 0, 0);
GetObject(hFont,sizeof(LOGFONT),&logFont);
logFont.lfHeight = pLogFont->lfHeight*2;
hNewFont = ::CreateFontIndirect(&logFont);
DeleteObject(hFont);//这里必要吗?我如果加上这句,此后,
//设置下一个同类控制时 GetObject函数会出错.


...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbit 2000-03-01
  • 打赏
  • 举报
回复
不需要,在使用完时,删除创建的字体
zjy 2000-02-29
  • 打赏
  • 举报
回复
softdoctor先生:
由于我的疏忽.我确实忘记了。
补充上时这样的:
*************************************************
HFONT hFont,hNewFont;
LOGFONT logFont;
hFont = (HFONT)::SendMessage(hWnd, WM_GETFONT, 0, 0);
GetObject(hFont,sizeof(LOGFONT),&logFont);
logFont.lfHeight = pLogFont->lfHeight*2;
hNewFont = ::CreateFontIndirect(&logFont);
SendMessage(hWnd,WM_SETFONT,(WPARAM)hNewFont,TRUE);
DeleteObject(hFont);
*************************************************
问题:我如果加上DeleteObject(hFont)这句,
此后,设置下一个同类控制时
GetObject(hFont,sizeof(LOGFONT),&logFont)函数会出错.
softdoctor 2000-02-29
  • 打赏
  • 举报
回复
你的程序有错!
理论上DeleteObject(hFont)没错,
但此时您并没有将新的字体赋给该窗口。
造成该窗口DC的字体HFONT是非法的,
因此下一次GetObject会出错。
应加上::SetMessage(hWnd,WM_SetFont,...);

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧