平台 SDK: Windows GDI

GrayString

GrayString函数在指定的位置绘制灰色文本。 该函数通过将文本复制到内存位图中来绘制文本,灰显该位图,然后将该位图复制到屏幕上。 无论选择的画笔和背景如何,该功能都会对文本进行灰化处理。 GrayString使用当前为指定设备上下文选择的字体。

如果lpOutputFunc参数为NULL,则GDI使用TextOut函数,并且假定lpData参数是要输出的字符串的指针。 如果要输出的字符不能由TextOut处理(例如,字符串存储为位图),则应用程序必须提供其自己的输出函数。

BOOL GrayString(
  HDC hDC,                      // 设备环境句柄
  HBRUSH hBrush,                // 画刷句柄
  GRAYSTRINGPROC lpOutputFunc,  // 回调函数
  LPARAM lpData,                // 应用程序定义的数据
  int nCount,                   // 字符数
  int X,                        // 水平位置
  int Y,                        // 垂直位置
  int nWidth,                   // 宽度
  int nHeight                   // 高度
);

参数

  • hDC

  • [in] 设备环境句柄。

  • hBrush

  • [in] 用于灰色的画刷句柄。 如果此参数为NULL,则文本将使用用于绘制窗口文本的相同笔刷变灰。

  • lpOutputFunc

  • [in] 指向将绘制字符串的应用程序定义函数的指针,或者如果要使用TextOut绘制字符串,则它是一个NULL指针。 有关详细信息,请参阅OutputProc回调函数。

  • lpData

  • [in] 指定要传递给输出函数的数据的指针。 如果lpOutputFunc参数为NULL,则lpData必须是要输出的字符串的指针。

  • nCount

  • [in] 指定要输出的字符数。 如果nCount参数为零,GrayString会计算字符串的长度(假设lpData是指向字符串的指针)。 如果nCount为-1,并且lpOutputFunc指向的函数返回FALSE,则图像显示但不显示灰色。

  • X

  • [in] 指定包含该字符串的矩形的起始位置的设备x坐标。

  • Y

  • [in] 指定包含该字符串的矩形的起始位置的设备y坐标。

  • nWidth

  • [in] 指定封装字符串的矩形的宽度(以设备单位表示)。 如果此参数为零,则GrayString将计算该区域的宽度,假定lpData是指向该字符串的指针。

  • nHeight

  • [in] 指定封装字符串的矩形的高度(以设备单位表示)。 如果此参数为零,则GrayString将计算该区域的高度,假定lpData是指向该字符串的指针。

返回值

如果字符串被绘制,则返回值不为零。

如果TextOut函数或应用程序定义的输出函数返回零,或者内存不足以创建用于灰色化的内存位图,则返回值为零。

Windows NT/2000/XP: 要获得扩展的错误信息,请调用GetLastError。

备注

如果不调用GrayString,应用程序可以在支持纯灰色的设备上绘制灰色字符串。 系统颜色COLOR_GRAYTEXT是用于绘制禁用文本的纯灰色系统颜色。 应用程序可以调用GetSysColor函数来检索COLOR_GRAYTEXT的颜色值。 如果颜色不是零(黑色),应用程序可以调用SetTextColor函数将文本颜色设置为颜色值,然后直接绘制字符串。 如果检索到的颜色为黑色,则应用程序必须调用GrayString来灰显文本。

Windows 95/98/Me: GrayStringW由Microsoft Layer for Unicode支持。 要使用它,必须将某些文件添加到应用程序中,如Windows 95/98 / Me系统上的Microsoft Layer for Unicode所述。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.51和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.
  Unicode: 在Windows NT/2000/XP上作为Unicode和ANSI版本实现。 Microsoft层还支持Unicode。