无论CreateFont(...)里的参数怎么改,字体总是放不大,怎么回事?●

hsd2006 2006-04-12 04:25:30
CFont m_font ;
m_font.CreateFont(100, // nHeight
60, // nWidth
0, // nEscapement
0, // nOrientation
FW_EXTRABOLD, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Arial"); // lpszFacename
GetDlgItem(IDC_STATIC)->SetFont( &m_font ) ;

无论nHeight nWidth设多大,字体大小总是不变大,怎么回事?
於是我將
CFont m_font ;
将以上一行定义放到类定义里面去,作为类的成员变量。就可以了。

我想知道爲什麽會這樣?有人說函数执行完后m_font立刻析購了。請問執行setfont(&m_font)怎麽會析購呢?
...全文
379 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ringphone 2006-04-13
  • 打赏
  • 举报
回复
给窗口设置自己创建的字体,要求这个字体在这个窗口存活期间必须是一直存在的。你用临时变量,SetFont后这个字体就不存在了。
sunmz_wjxy 2006-04-13
  • 打赏
  • 举报
回复
HFONT m_Font;
m_Font = CreateFont(
11,// nHeight
0,// nWidth
0,// nEscapement
0,// nOrientation
FW_NORMAL,// nWeight
FALSE,// bItalic
FALSE,// bUnderline
FALSE,// cStrikeOut
ANSI_CHARSET,// nCharSet
OUT_DEFAULT_PRECIS,// nOutPrecision
CLIP_DEFAULT_PRECIS,// nClipPrecision
ANTIALIASED_QUALITY,// nQuality
DEFAULT_PITCH | FF_SWISS,// nPitchAndFamily
_T("Courier"));// lpszFacename

::SendMessage(::GetDlgItem(m_hWnd,IDC_VIEWEDIT),WM_SETFONT,(WPARAM)m_Font,MAKELPARAM(TRUE, 0));
昊叔 2006-04-12
  • 打赏
  • 举报
回复
这个我遇到过,你用的是临时变量,只设置一次,在以后使用时就不存在了,用指针把,窗体在刷新自己时要字体的,
CFont* m_font = new CFont() ;
m_font->CreateFont(100, // nHeight
60, // nWidth
0, // nEscapement
0, // nOrientation
FW_EXTRABOLD, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Arial"); // lpszFacename
GetDlgItem(IDC_STATIC)->SetFont( m_font ) ;

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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