下面这段代码是从一本书的配套光盘里取出来的,是从CButton类派生的,实现三角形按钮。
if ((state & ODS_FOCUS)) {//焦点
CRgn rgn;
rgn.CreateRectRgn(rect.left, rect.top, rect.right, rect.bottom);//复制客户区矩形
pDC->SelectClipRgn(&rgn);//该函数选择一个区域作为指定设备环境的当前剪切区域//剪切区域也是区域的一种, 窗口在重绘时只会重绘剪切区域中的内容
pDC->SelectObject(FocusPen);
==========================函数解释==================================
SelectClipRgn
函数功能:该函数选择一个区域作为指定设备环境的当前剪切区域。
函数原型:int SelectClipRgn(HDc hdc, HRGN hrgn);
参数:
hdc:设备环境句柄。
hrgn:标识被选择的区域。
返回值:返回值表明了区域的复杂度,可以是下列值之一。
NULLREGION:区域为空;
SIMPLEREGION:区域为单个矩形;
COMPLEXREGION:区域为多个矩形;
ERROR:发生错误(以前的剪切区域不受影响)。
Windows NT:若想获得更多错误信息,请调用GetLastError函数。
注释:只有选择区域的一个拷贝被使用,区域本身可被任何其他的设备环境所选择,并且它还被删除。
SelectclipRgn函数假设指定区域的坐标在设备联合中已经定义。
要想删除一个设备环境的剪切区域,指定一个空(NULL)区域句柄。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib。
评论