第二节 API之输出文字

第二节 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 下一节

你可能感兴趣的:(第二节 API之输出文字)