Windows_文本重绘

文本输出

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

猜你喜欢

转载自blog.csdn.net/IT_xiaoQ/article/details/107920810