c语言textout字体大小,《WINDOWS程序设计》第四章关于TEXTOUT的小问题

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

《WINDOWS程序设计》第四章关于TEXTOUT的小问题

文章原文是这样说的:

您会发现常常需要显示格式化的数字跟简单的字符串。我在第二章讲到过,您不能使惯用的工具(可

爱的printf 函数)来完成这项工作,但是可以使用sprintf 和Windows 版的sprintf-wsprintf。这些函

数与printf 相似,只是把格式化字符串放到字符串中。然后,可以用TextOut 将字符串输出到显示器上。

非常方便的是,从sprintf 和wsprintf 传回的值就是字符串的长度。您可以将这个值传递给TextOut 作为

iLength 参数。下面的程序代码显示了wsprintf 与TextOut 的典型组合:

int iLength ;

TCHAR szBuffer [40] ;

其它行程序

iLength = wsprintf(szBuffer, TEXT("The sum of %i and %i is %i"),

iA, iB, iA + iB) ;

TextOut(hdc, x, y, szBuffer, iLength) ;

对于这样简单的情况,可以将nLength 的定义值与TextOut 放在同一条叙述中,从而无需定义iLength:

TextOut(hdc, x, y, szBuffer,

wsprintf(szBuffer, TEXT("The sum of %i and %i is %i"),

iA, iB, iA + iB)) ;

虽然这样子写起来不好看,但是功能与前者是一样的。

综合使用

问题1:

示例代码

iLength = wsprintf(szBuffer, TEXT("The sum of %i and %i is %i"),

iA, iB, iA + iB) ;

TextOut(hdc, x, y, szBuffer, iLength) ;

中的格式字符%i是什么意思?我翻了很多关于C语言的书,也没找到这个格式字符。

问题2:

示例程序SYSMETS1的WndProc函数在处理WM_PAINT消息时:

case WM_PAINT :

hdc = BeginPaint (hwnd, &ps) ;

for (i = 0 ; i < NUMLINES ; i++)

{

TextOut (hdc, 0, cyChar * i,

sysmetrics[i].szLabel,

lstrlen (sysmetrics[i].szLabel)) ;

TextOut (hdc, 22 * cxCaps, cyChar * i,

sysmetrics[i].szDesc,

lstrlen (sysmetrics[i].szDesc)) ;

SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;

TextOut (hdc, 22 * cxCaps + 40 * cxChar, cyChar * i, szBuffer,

wsprintf (szBuffer, TEXT ("%5d"),

GetSystemMetrics (sysmetrics[i].iIndex))) ;

SetTextAlign (hdc, TA_LEFT | TA_TOP) ;

}

EndPaint (hwnd, &ps) ;

return 0 ;

其中的:

TextOut (hdc, 0, cyChar * i,

sysmetrics[i].szLabel,

lstrlen (sysmetrics[i].szLabel)) ;

TextOut (hdc, 22 * cxCaps, cyChar * i,

sysmetrics[i].szDesc,

lstrlen (sysmetrics[i].szDesc)) ;

为什么不采用wsprintf对所显示的字符串进行处理,就像后面

TextOut (hdc, 22 * cxCaps + 40 * cxChar, cyChar * i, szBuffer,

wsprintf (szBuffer, TEXT ("%5d"),

GetSystemMetrics (sysmetrics[i].iIndex))) ;

那样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值