以下摘自《windows程序设计》图形基础的程序5-6WHATSIZE
其中有一个函数内容如下:
void Show (HWND hwnd, HDC hdc, int xText, int yText, int iMapMode,
TCHAR * szMapMode)
{
TCHAR szBuffer [60] ;
RECTrect ;
SaveDC (hdc) ;
SetMapMode (hdc, iMapMode) ;
GetClientRect (hwnd, &rect) ;
DPtoLP (hdc, (PPOINT) &rect, 2) ;
RestoreDC (hdc, -1) ;
TextOut (
hdc, xText, yText, szBuffer,
wsprintf (szBuffer, TEXT ("%-20s %7d %7d %7d %7d"), szMapMode,
rect.left, rect.right, rect.top, rect.bottom)) ;
}
其中关于SaveDC和RestoreDC的使用有疑问,RestoreDC在这里有什么用,它是将目前的设备上下文恢复吗?如果是,那设置了映射模式不是已经对设备环境产生影响了吗,直接绘图不就是在这种模式下绘图吗?那这里还要RestoreDC何用?如果是恢复SaveDC保存的设备环境,那更没道理了,设置映射模式的代码岂不是无用的?
请大家指点,我的全部积分都拿出来了
有个疑问,既然这样,为什么还要更改dc的相关数据,RestoreDC将恢复到savedc之前的状态,在这之前对dc做的修改岂不是无效?
|