改变字体大小(MFC)
MFC改变对话框中静态文本的字体大小 收藏
MFC改变对话框中静态文本的字体大小
2010/08/09 11:30
转:
VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。
例子:
1、改静态文体的ID,如:IDC_STATIC1
2、添加一个Edit控件,建立一个关联的控件m_editControl。
偶像电视剧3、在OnInitDialog中添加如下代码:
CFont * f;
f = new CFont;
f->CreateFont(16,            // nHeight
    0,          // nWidth
    0,          // nEscapement
    0,          // nOrientation
    FW_BOLD,    // nWeight
    TRUE,        // bItalic
    FALSE,      // bUnderline
    0,          // cStrikeOut
    ANSI_CHARSET,              // nCharSet
    OUT_DEFAULT_PRECIS,        // nOutPrecision
    CLIP_DEFAULT_PRECIS,      // nClipPrecision
单田芳经典评书大全
    DEFAULT_QUALITY,          // nQuality
    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
    _T("Arial"));              // lpszFac
m_editControl.SetFont(f);
m_editControl.SetWindowText("问专家");
GetDlgItem(IDC_STATIC1)->SetFont(f);
运行结果如下图所示,下载完整例子 CtrlFont.zip。
需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量,如果把程序改成下面这样:
CFont f;
f.CreateFont(16,            // nHeight
    0,          // nWidth
    0,          // nEscapement
    0,          // nOrientation
    FW_BOLD,    // nWeight
    TRUE,        // bItalic
    FALSE,      // bUnderline
    0,          // cStrikeOut
    ANSI_CHARSET,              // nCharSet
    OUT_DEFAULT_PRECIS,        // nOutPrecision
    CLIP_DEFAULT_PRECIS,      // nClipPrecision
    DEFAULT_QUALITY,          // nQuality
    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
    _T("Arial"));
m_editControl.SetFont(&f);
m_editControl.SetWindowText("问专家");
GetDlgItem(IDC_STATIC1)->SetFont(&f);
运行后就得不到想要的效果了,因为OnInitDialog函数执行完毕,CFont f就会被清除。必须保证SetFont设置的字体对象在对话框关闭前一直有效。所以通常是使用指针或类成员的方式来保存所建立的字体对象。
非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。
cHeight是字体的高度。
cWidth是字体的宽度。
cEscapement是字体的倾斜角。
cOrientation是字体的倾斜角。
cWeight是字体的粗细。
bItalic是字体是否斜体。
bUnderline是字体是否有下划线。
bStrikeOut是字体是否有删除线。
iCharSet是字体使用的字符集。
iOutPrecision是指定如何选择合适的字体。
iClipPrecision是用来确定裁剪的精度。
iQuality是怎么样跟选择的字体相符合。
iPitchAndFamily是间距标志和属性标志。
pszFaceName是字体的名称。
CreateFont()函数的MSDN翻译
函数功能:该函数创建一种有特殊性的逻辑字体,此逻辑字体可以在后面被任何设备选择。
    函数原型:HFONT CreateFont(int nHeight,
                          int nWidth,
                          int nEscapement,
                          int nOrientation,
                          int fnWeight,
                          DWORD fdwltalic,
                          DWORD fdwUnderline,
交通事故认定书                          DWORD fdwStrikeOut,
                          DWORD fdwCharSet,
                          DWORD fdwOutputPrecision,
                          DWORD fdwClipPrecision,
                          DWORD fdwQuality,
                          DWORD fdwPitchAndFamily,
                          LPCTSTR lpszFace);
    参数:
    nHeight:指定字体的字符单元或字符的逻辑单位高度,字符的高度值(也被称为em高度)是指字符单元高度值减去内部标头值。字体映射器以如下方式解释nHeight指定的值,
各值含义为:
    >0:字体映射器转换这个值以设备单位,并和已有字体的单元高度相匹配。
    0:字体映射器转换在选择匹配时用一个缺省的高度值。
    <0:字体映射器转换这个值到设备单位,并将它的绝对值和已有字体的字符高度相匹配。
    比较所有的高度,字体映射器选择不超过要求大小的最大字体。
    此映射当字体第一次被使用时发生。
    对于MM_TEXT映射方式,可以用下面的公式为一种指定了点大小的字体确定高度:
    nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)
    nWidth:指定所要求字体的字符的逻辑单位的平均宽度。如果此值为0,字体映射器选择一个closest match值,closest match值是由比较当前设备的特征系数与可使用字体的数字化特征系数之差的绝对值而确定的。
高情商的人说早安语句眼线液笔
    nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之一度为单位。移位向量平行于正文行的基线。
    Windows NT:当图形设备设置为GM_ADVANCED时,可以不依赖字符串的字符的定位角而指定字符串的移位角。
    当图形模式被设置为GM_COMPATIBLE时,nEscapement同时指定移位角和定位角,可以设置nEscapement和nOrientation为相同的值。
    Windows 95:nEscapement同时指定移位角和定位角,可设置nEscapement和nOrientation为相同的值。
    nOrientation:指定每个字符的基线和设备X轴之间的角度。
    FnWeight:在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,如果此值为0,则使用缺省的权值。
    为方便定义,可使用如下值:
描写春天的比喻句
    FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300;
    FW_NORMAL:400;FW_REGULAR;400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600;
    FW_BOLD:700;FW_EXTRABOLD;800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。
    fdwItalic:如果设置为TRUE则指定斜体。
    fdwUnderline:如果设置为TRUE,则指定加下划线的字全。
    fdwStrikeOut:如果设置为TRUE,则strikeout指定字体。
    fdwCharSet:指定字符集,下列值是预定义的:
    ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。