ExtTextOut() 代替 TextOut() 以提高性能
http://support.microsoft.com/kb/71230/zh-cn
如果速度是最关键因素时应用程序将文本写入一个窗口,在应用程序应采取每个可能的速度的提高无论如何次要的优点。因此时文本写入时间有限的环境中的某个窗口,, ExtTextOut() 应该使用的 TextOut() 而不是因为 ExtTextOut() 是速度稍快。
ExtTextOut() 就是最低级功能的应用程序可以调用来输出到一个窗口的文本。另一方面,TextOut() 是实质上是一个调用 ExtTextOut() wOptions、 lpRect,和 lpDx 将设置为零。使用 ExtTextOut() 可能会不导致明显的速度差异 ; 但是,它更快地替换尤其是当应用程序有大量的写入的文本。
原型:
virtual BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
LPCTSTR lpszString,
UINT nCount,
LPINT lpDxWidths
);
BOOL ExtTextOut(
int x, //坐标
int y,
UINT nOptions,//选项,=ETO_CLIPPED 表示要显示的文本是粘贴在矩形框内,=ETO_OPAQUE表示当前背景颜色会充满整个矩形框
LPCRECT lpRect,//Points to a RECT structure that determines the dimensions of the rectangle.
const CString& str,//Points to the specified character string to be drawn.
LPINT lpDxWidths
);
实例:
void OutputTime()
{
//得到本地时间
CString str;
GetLocalTime(&stLocal);
str.Format(_T(" %02d:%02d:%02d"),stLocal.wHour,stLocal.wMinute,stLocal.wSecond);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255,255,255));
dc.ExtTextOut(220,8,ETO_CLIPPED,CRect(220,8,282,29),str,NULL);
}