主题:如何设置幼圆体,宋体,楷体?与CreateFont有关吗?
wind_walker
[专家分:420] 发布于 2008-03-05 01:44:00
我在MSDN中查看了CREATEFONT函数,似乎没有关系.但是也找不出在哪里设置.
恳请各位仁兄为我解答.
回复列表 (共6个回复)
沙发
lisuimeng [专家分:490] 发布于 2008-03-05 06:53:00
事实上,在MFC中常用来创建字体的函数是CreatePointFont
BOOL CreatePointFont( int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL );
它的第二个参数是个字符串,它表示你要创建哪种字体,假如你设成“华文行楷”创建出来的就是华文行楷字体,如果设成“隶书”创建的就是隶书了。
板凳
wind_walker [专家分:420] 发布于 2008-03-05 13:08:00
我现在还没学到MFC编程,还处在API阶段.题目也是这阶段的练习题.有没有通过API函数来
设置我们想要字体的.如果有的话,又该如何设置呢?
3 楼
lisuimeng [专家分:490] 发布于 2008-03-05 13:37:00
在平台SDK中是比较麻烦的。
HFONT CreateFont(
int nHeight, // logical height of font
int nWidth, // logical average character width
int nEscapement, // angle of escapement
int nOrientation, // base-line orientation angle
int fnWeight, // font weight
DWORD fdwItalic, // italic attribute flag
DWORD fdwUnderline, // underline attribute flag
DWORD fdwStrikeOut, // strikeout attribute flag
DWORD fdwCharSet, // character set identifier
DWORD fdwOutputPrecision, // output precision
DWORD fdwClipPrecision, // clipping precision
DWORD fdwQuality, // output quality
DWORD fdwPitchAndFamily, // pitch and family
LPCTSTR lpszFace // pointer to typeface name string
);
最后一个参数是字体。
用函数EnumFontFamilies可以列举出系统中安装的字体。
4 楼
wind_walker [专家分:420] 发布于 2008-03-05 23:09:00
确实很复杂,英语又不内行,看得我头都大了,您能不能给出一个具体的例子,分别用幼圆体,宋体,
楷体在用户区显示一段文字,通过例子会比较形象而且也容易理解.
5 楼
zjf6738 [专家分:250] 发布于 2008-03-09 14:24:00
//...
LRESULT CALLBACK WndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hDc;
HPEN hPen;
HFONT hFont;
TEXTMETRIC tm;
static char TextBuf[]={"自定义的字体"};
int i;
switch(Message)
{
case WM_PAINT:
hDc=BeginPaint(hWnd,&ps);
hFont=CreateFont(50,
64,
0,
0,
0,
0,
0,
0,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
0,
"隶书");//这里修改一下就可以了
SelectObject(hDc,hFont);
//Rectangle(hDc,10,10,790,90);
SetTextColor(hDc,RGB(255,0,0));
SetBkColor(hDc,RGB(0,0,255));
TextOut(hDc,10,10,TextBuf,strlen(TextBuf));
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);break;
default:
return DefWindowProc(hWnd,Message,wParam,lParam);
}
return 0;
}
//..
CreateFont的参数如楼上所说,上面的代码中有些参数可以参见MSDN
6 楼
wind_walker [专家分:420] 发布于 2008-03-11 12:55:00
"隶书");//这里修改一下就可以了
如果是仿宋,或幼圆,那应该在这里改为什么呢?
如果直接在这里写上宋体,幼圆那是没有用的.
我来回复