第二节 API之输出文字
一直用C的printf或C++的count输出文字或信息,在win32应用程序中也有类似的函数
第一种TextOut,原型是BOOL TextOut (
HDC hdc, //接受设备内容句柄
int nXStart, //第2个和第3个参数分别接受输出文字的x,y坐标以左上角为基点
int nYStart,
LPCTSTR lpString, //接受输出信息字符串
int cbString);//字符串的字符数
第二种DrawText,原型是int DrawText(
HDC hDC, // 设备描述表句柄
LPCTSTR lpString, // 将要绘制的字符串
int nCount, // 字符串的长度
LPRECT lpRect, // 指向矩形结构RECT的指针
UINT uFormat // 正文的绘制选项
);
提到这2个函数就不的不提GDI(Graphics Device Interface)图形设备接口,我的理解是需要画图就必须得和这个接口打交道,在这节中,我记录2种获取GDI的方式
第1种 只能在命令消息类WM_PAINT使用
HDC hdc ;//声明一个设备句柄
hdc = BeginPaint (hwnd, &ps) ;//获取一个GDI接口
EndPaint (hwnd, &ps) ;//关闭GDI接口
第二种 能在任何地方使用
HDC hdc;
hdc = GetDC (hwnd) ;
ReleaseDC (hwnd, hdc) ;
好了 以上GDI设备接口和输出函数都有了,该输出文字了,不过还要注意以下几点
1->要声明一个保存客户区域信息的结构体PAINTSTRUCT ps;作用我也搞不懂
2->取得了GDI要记得释放
3->字符大小要适用GetTextMetrics(hdc, &tm) ; TEXTMETRIC tm ;保存了这些信息
4->输出对齐格式SetTextAlign(hdc, TA_LFFT);左对齐
5->输出文字间距SetTextCharacterExtra(hdc, 2);间距为2
6->改变文字颜色SetTextColor(hdc,RGB(255,0,0)) RGB为取颜色函数
7->改变文字背景颜色SetBkColor(hdc,0xCDFAFF) SetBkMode(hdc,TRANSPARENT)透明,OPAQUE不透明
8->改变字体 声明一个CFont字体类hFont,用CreateFont函数创造一个字体或者CreatePointFont来选择一个现有的 SelectObject(hdc,hFont)来选择字体 他会返回以前字体句柄 记得DeleteObject(hFont)销毁字体
9->获取客户区矩形坐标 先声明RECT矩形类rc GetClientRect(hWnd, &rc);来获取矩形区域坐标
差不多了 具体的函数原型可以查看msdn 下一节