您的位置:首页 > 其它

第25周-window程序设计(基础篇)-第4章-系统字体及格式化文字

2016-09-21 11:30 288 查看
1、系统字体:

/*
呼叫GetTextMetrics取得字体大小:
系统字体的大小取决于Windows所执行的视讯显示器的分辨率
*/
typedef struct tagTEXTMETRIC
{
LONG tmHeight; //tmAscent与tmDescent的和,表示基准在线下字符的最大纵向高度。
LONG tmAscent; //内部的间距
LONG tmDescent;
LONG tmInternalLeading; //通常被设置为0
LONG tmExternalLeading; //字体设计者建议加在横向字符之间的空间大小
LONG tmAveCharWidth; //乘以150%可计算大写字母的平均宽度
LONG tmMaxCharWidth;
其它结构字段
}
TEXTMETRIC,*PTEXTMETRIC; //在内定设备内容下,映像方式是MM_TEXT,因此值的大小是以图素为单位。

TEXTMETRIC tm; //定义结构变量
hdc = GetDC(hwnd);
GetTextMetrics(hdc,&tm);
ReleaseDC(hwnd,hdc);

2、格式化文字:

/*在窗口消息处理程序内定义两个变量来保存平均字符宽度(cxChar)和总的字符高度(cyChar):*/
static int cxChar,cyChar; //若在函数外定义则不需要static
变量名前缀c代表count,指图素数。

/*WM_CREATE程序代码*/
case WM_CREATE:
hdc = GetDC(hwnd);
GetTextMetric(hdc,&tm);
cxChar = tm.tmAveCharWidth;
cxChar = tm.tmHeight+tm.ExternalLeading;
RealeaseDC(hwnd,hdc);
return 0;

/*wsprintf与TextOut的典型组合*/
int iLength;
TCHAR szBuffer[40];
其它行程序
iLength = wsprintf(szBuffer,TEXT("The sum of %i and %i"),iA,iB,iA+iB);
TextOut(hdc,x,y,szBuffer,iLength);

同功能代码
TextOut(hdc,x,y,szBuffer,
wsprintf(szBuffer,TEXT("The sum of %i and %i"),iA,iB,iA+iB));//直接将参数代入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: