我想把一个动态生成的控件改成“宋体”,9号字,该怎么做????
解决方案 »
- CAsyncSocket 的Attach的问题,请高手帮忙,详细信息如内.
- 为什么写不进去
- vc新手,请介绍一些比较好论坛或网站(VC专题)
- 有java的编程基础进入VC的阵营,怎么速成!??
- 怎么样改变一种文档类型的右键菜单?
- 请tkutt回答,急急急急急急急急急急急急急急................
- ComponentOne VSFlexGrid 的Cell 不能置空?
- 过来人给个提示!!通过msce真的是拓展钱途的好方法吗?有必要去上那些教你通过的课吗?
- 如何将我的程序在启动时在任务栏中显示为图标?(像OICQ、金山词霸)
- 为什么在图上无法显示斜率字体?
- CPropertySheet怎么能把标签页放在左下,而不是默认的左上?
- 我想知道有关MFC的类的结构图
font.createfont(...)
pCtrl->SetFont(&font)
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);
logfont.lfHeight =logfont.lfHeight * 1.5;
logfont.lfWidth = logfont.lfWidth * 1.5;
你怎么知道大小要乘1.5倍呢??
error C2440: '=' : cannot convert from 'char [5]' to 'char [32]'
改用strcpy通过。不过实际显示效果不对啊,我就是想把控件的字改成跟菜单里的中文一样,怎么弄???
HFONT hfont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
SendMessage(hWnd,WM_SETFONT,(WPARAM)hfont,MAKELPARAM(TRUE,0));
hWnd为控件句柄
error C2660: 'SendMessageA' : function does not take 4 parameters
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);
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);
font.createfont(...)
pCtrl->SetFont(&font)
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,所以编译时报参数不对的错误请在函数前加::
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 //字体名称
);
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
_T("宋体"));pCtrl->SetFont(&m_Font);来晚了一点。根据长期应用的经验,置字宽为 0 指定字高很容易实现汉字“八号”到“初号”字体,而置字高为 0 或两者均不为 0 则要麻烦得多。9 号字就是“小六”号字。
{
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
};