导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC++技术资源

我想把一个动态生成的控件改成“宋体”,9号字,该怎么做????

zywh 2004-04-01 09:55:24
我想把一个动态生成的控件改成“宋体”,9号字,该怎么做????
...全文
91 点赞 收藏 20
写回复
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
enum FontSize
{
Eight = 6,
LessSix = 9, Six = 10,
LessFive = 12, Five = 14,
LessFour = 16, Four = 18,
LessThree = 20, Three = 21,
LessTwo = 24, Two = 29,
LessOne = 32, One = 34,
LessZero = 48, Zero = 56
};
回复
m_Font.CreateFont(9, 0, 0, 0, FW_NORMAL, 0, 0, 0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
_T("宋体"));

pCtrl->SetFont(&m_Font);

来晚了一点。根据长期应用的经验,置字宽为 0 指定字高很容易实现汉字“八号”到“初号”字体,而置字高为 0 或两者均不为 0 则要麻烦得多。

9 号字就是“小六”号字。
回复
lixiaosan 2004-04-05
CFont font;
font.createfont(...)
pEdit->SetFont(&font)




BOOL CreateFont(
int nHeight, //字体的高度
int nWidth, //字体的宽度
int nEscapement, //字体显示的角度
int nOrientation, //字体的角度
int nWeight, //字体的磅数
BYTE bItalic, //斜体字体
BYTE bUnderline, //带下划线的字体
BYTE cStrikeOut, //带删除线的字体
BYTE nCharSet, //所需的字符集
BYTE nOutPrecision, //输出的精度
BYTE nClipPrecision, //裁减的精度
BYTE nQuality, //逻辑字体与输出设备的实际
//字体之间的精度
BYTE nPitchAndFamily, //字体间距和字体集
LPCTSTR lpszFacename //字体名称
);
回复
ringphone 2004-04-05
LOGFONT m_lpMainFontRec;
HDC hDC = GetDC(hWnd);

//你想要几号字,把size替换为相应数字
m_lpMainFontRec.lfHeight = -MulDiv(size,GetDeviceCaps(hDC,LOGPIXELSY),72);
ReleaseDC(m_hWnd,hDC);
m_lpMainFontRec.lfWidth = 0;
m_lpMainFontRec.lfEscapement = 0;
m_lpMainFontRec.lfOrientation = 0;
m_lpMainFontRec.lfWeight = FW_NORMAL;
m_lpMainFontRec.lfItalic = FALSE;
m_lpMainFontRec.lfUnderline = FALSE;
m_lpMainFontRec.lfStrikeOut = FALSE;
m_lpMainFontRec.lfCharSet = DEFAULT_CHARSET;
m_lpMainFontRec.lfOutPrecision = OUT_DEFAULT_PRECIS;
m_lpMainFontRec.lfClipPrecision = CLIP_DEFAULT_PRECIS;
m_lpMainFontRec.lfQuality = PROOF_QUALITY;
m_lpMainFontRec.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;
//szFontname是你要的字体,如"宋体"
strcpy(m_lpMainFontRec.lfFaceName,szFontname);

HFONT m_font = CreateFontIndirect(&m_lpMainFontRec);
SendMessage(hWnd,WM_SETFONT,(WPARAM)m_hfont,MAKELPARAM(TRUE,0));

以上为纯API,所以编译时报参数不对的错误请在函数前加::
回复
bjyst2008 2004-04-04
再试一下这个把,我试了完全可以
LOGFONT logfont;
CFont *pfont = m_ctrShowMessage.GetFont();
pfont->GetLogFont( &logfont );
logfont.lfHeight =-12;//9号字

strcpy(logfont.lffacename,"宋体");//属性自己查一下
static CFont font;
font.deleteobject();
font.CreateFontIndirect(&logfont);
m_ctrShowMessage.SetFont(&font);
回复
zhjie374 2004-04-04
CFont font;
font.createfont(...)
pCtrl->SetFont(&font)
回复
xrenwu 2004-04-04
up一下
回复
zywh 2004-04-02
xiaogengcn(风)

用你这个字变的很小啊,不对吧
回复
mark
回复
xiaogengcn 2004-04-02
HFONT hFont;
hFont = CreateFont(-9, 0, 0, 0, 400, 0, 0, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH || FF_DONTCARE, "宋体");
SendMessage(hWnd,WM_SETFONT,(DWORD)hFont,TRUE);
回复
bjyst2008 2004-04-02
LOGFONT logfont;
CFont *pfont = m_ctrShowMessage.GetFont();
pfont->GetLogFont( &logfont );
logfont.lfHeight =logfont.lfHeight * 1.5;
logfont.lfWidth = logfont.lfWidth * 1.5;
logfont.?="宋体";//属性自己查一下
CFont font;
font.CreateFontIndirect(&logfont);
m_ctrShowMessage.SetFont(&font);
回复
zywh 2004-04-02
up
回复
uoyevoli 2004-04-02
::SendMessage(hWnd,WM_SETFONT,(WPARAM)hfont,MAKELPARAM(TRUE,0));
回复
zywh 2004-04-02
ringphone(临风)
error C2660: 'SendMessageA' : function does not take 4 parameters
回复
zywh 2004-04-02
ringphone(临风)

error C2660: 'SendMessageA' : function does not take 4 parameters
回复
ringphone 2004-04-02
想把控件的字改成跟菜单里的中文一样,那更简单
HFONT hfont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
SendMessage(hWnd,WM_SETFONT,(WPARAM)hfont,MAKELPARAM(TRUE,0));
hWnd为控件句柄
回复
zywh 2004-04-02
用你的logfont.lfFaceName="宋体";报错。
error C2440: '=' : cannot convert from 'char [5]' to 'char [32]'
改用strcpy通过。

不过实际显示效果不对啊,我就是想把控件的字改成跟菜单里的中文一样,怎么弄???
回复
zywh 2004-04-02
bjyst2008(追风)
logfont.lfHeight =logfont.lfHeight * 1.5;
logfont.lfWidth = logfont.lfWidth * 1.5;
你怎么知道大小要乘1.5倍呢??
回复
zywh 2004-04-01
具体...是什么
回复
zswzwy 2004-04-01
CFont font;
font.createfont(...)
pCtrl->SetFont(&font)
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

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