CDC::GrayString

virtual BOOL GrayString(
        CBrush* pBrush,
        BOOL(CALLBACK EXPORT* lpfnOutput) (HDC,LPARAM,int),
        LPARAM lpData,
        int nCount,
        int x,
        int y,
        int nWidth,
        int nHight
        );

返回值:
如果字符串已经绘制,则返回非零值。否则如果TextOut函数或应用输出函数返回0,或者无足够内存空间来创建灰显位图,则返回0。

参数:
pBrush用来灰显的画刷的标识。
lpfnOutput指定绘制字符串的应用调用函数的地址。要了解更多的信息,请参阅Windows 的OutputFunc调用函数。如果该参数为NULL,系统使用TextOut函数绘制字符串。假定lpData为指向用于输出的字符串的长指针。
lpData传递给输出函数的数据的指针,如果lpfnOutput为NULL,lpData必须为指向用于输出的字符串的长指针。
nCount将要输出的字符数目。如果值为0,GrayString计算字符串的长度(假定lpData为该字符串的指针)。如果nCount为-1,lpfnOutput指向的函数返回0,显示图象,但并不变灰。
x字符串外接矩形的起始位置的X逻辑坐标。
y字符串外接矩形的起始位置的Y逻辑坐标。
nWidth指定该字符串外接矩形的宽度(逻辑单位)。如果nWidth为0,GrayString计算该区域的宽度,假定lpData是该字符串的指针。
nHight指定该字符串外接矩形的高度(逻辑单位)。如果nHight为0,GrayString计算该区域的高度,假定lpData是该字符串的指针。

说明:
通过将文本写入内存位图使位图变灰,再拷贝显示的方法绘制灰显文本,而不考虑选择的画刷和背景是什么。GrayString函数使用当前选择的字体,使用函数前,必须选择MM_TEXT映射模式。应用在支持固体色变灰的设备上无需调用GrayString成员函数就可绘制灰显文本。系统色COLOR_GRAYTEXT就是绘制无效文本灰显的固体色。应用能够调用GetSysColor函数来获取COLOR_GRAYTEXT的颜色值。如果颜色不是0(黑色),应用能调用SetTextColor成员函数来设定文本颜色,并直接画出字符串,如果获得颜色是黑色,应用必须调用GrayString来使文本灰显。如果lpfnOutput为NULL,GDI使用Windows的TextOut 函数,并假设lpData是指向用于输出的字符串的指针。如果用于输出的文本不能被TextOut成员函数处理(比如:字符串存储在位图中),应用必须提供它的输出函数。在返回Windows时还应注意到所有的调用函数必须捕获Microsoft Foundation异常。因为异常仍在调用函数、范围之内。关于异常的更多信息,请参阅联机文档“Visual C++程序员指南”中的“异常”。传递给GrayString的调用函数必须使用_stdcall调用约定,并使用_declspec进行输出。当框架处于预览模式时,GrayString成员函数调用会转为一个TextOut调用,回调函数不会被调用。

请参阅:::GetSysColor, CDC::SetTextColor, CDC::TextOut, ::GrayString