文本输出
1.绘制和重绘
WM_PAINT
有效矩形和无效矩形
无效矩形:需要重新绘制的部分
2.GDI:Windows图形设备接口函数
常用字符串输出函数:TextOut(hdc, x,y, psText,iLength)
hdc:一个设备环境句柄
xy:定义了字符串在客户区中的开始位置
pxTest:指向字符串指针
iLength:字符串长度
2.2 获取设备环境句柄:
BeginPint()函数返回值就是设备环境句柄,EndPaint()
GetDC()函数也可以获取设备环境句柄是窗口客户区的,ReleaseDC(),这两种使用时必须成对使用
不同点:BeginPint的裁剪矩形是无效矩形,而GetDC裁剪矩形是整个客户区。
GetWindowDC()返回的是整个窗口的设备环境句柄
2.3TEXTOUT函数详解
TextOut(hdc, x, y, psText, iLength);
设备环境的一个属性决定文本颜色,默认黑色,同时默认背景颜色为白色。注意文本背景色与窗口类中的背景色不同,窗口类背景色是Windows用来擦除客户区的刷子可以纯色也可以不纯色。它不属于设备环境。在定义窗口类时,大多应用程序选择WGHITE_BRUSH作背景,这样二者背景色就相同了。
2.4系统字体
设备环境定义调用TextOut时Windows使用的字体,默认字体为系统字体或SYSTEM_FONT。系统字体是Windows在标题栏、菜单和对话框中使用的默认字体。从早期等宽字体变到现在的变宽字体。
2.5字符大小
字符高度决定下一行文字垂直位置,字符宽度决定下一行文本的水平位置。
GetSystemMetrics()获取用户界面尺寸,他需要设备环境句柄。因为会返回该设备句柄中选定的字体信息,Windows吧字符信息值复制进TEXTMETRIC结构中。
获取字号的方法:
hdc = GetDC (hwnd);
GetTextMetrics (hdc, &tm);
ReleaseDC (hwnd, hdc);
2.6文本尺寸的度量
2.7文本的格式化
获取系统字体宽度和高度
case WM_CREATE:
hdg = GetDC (hwnd);
GetTextMetrics (hdc, &tm);
cxChar = tm.tmAveCharWidth;
cyChar = tm.tmHeight + tm.tmExternalLeading;
ReleaseDC (hwnd, hdc);
return 0;
3 滚动条
在窗口中包括滚动条,只需在CreateWindow第三个参数包括窗口风格标识符WS_VSCROLL(垂直)、WS_HSCROLL(水平)。
可以通过GetSystemMetrics()来获取滚动条的高度和宽度。
3.1滚动条的位置和范围
通过下面函数可以修改滚动条范围
SetScrollRange(hwnd, iBar, iMin, iMax, bRedeaw);
注意:iBar参数为SB_VERT/SB_HORZ,重绘滚动条时bRedraw设为TRUE,如果调完还调其它函数改变滚动条设为FALSE。
程序中使用滚动条时,程序和Wiondows共同维护滚动条。
3.2滚动条消息
3.3 加入滚动条的SYSTMETS