### 函数功能

该函数使用特定的掩码和光栅操作来对源和目标位图的颜色数据进行组合。

### 函数原型

BOOL MaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, HBITMAP hbmMask, int xMask, int yMask, DWORD dwRop)；

### 参数

hdcDest：指向目标设备环境的句柄。
nXDest：指定目标矩形左上角的逻辑X轴坐标。
nYDest：指定目标矩形左上角的逻辑Y轴坐标。
nWidth：指定目标矩形和源位图的宽度，按逻辑单位。
nHeight：指定目标矩形和源位图的高度，按逻辑单位。
hdcSrc：指向源位图所在的设备环境，如果dwRop参数规定的光栅操作不包括源位图，那么该参数必须为0。
nXSrc：指定源位图左上角的逻辑X轴坐标。
nYSrc：指定源位图左上角的Y轴逻辑坐标。
nbmMask：指向单色掩码位图的句柄，该位图与源设备环境中的彩色位图进行组合。
xMask：指定由参数hbmMask指向的掩码位图的水平像素偏移量。
yMask：指定由参数hbmMask指向的掩码位图的垂直像素偏移量。
dwRop：指定前景和背景光栅操作码，函数使用这些操作码为控制源和目标数据的组合。背景光栅操作码存储在该参数值的高位字中的高位字节中，而前景光栅操作代码雄在该参数值的高位字中的低位字节中，而低位字则忽略，并且应该为0。宏MAKEROP4创建前景和背景光栅操作码这样的组合。
有关该函数场景中的前景和背景方面的讨论，可参考下面的备注一节。
至于有关公用的我栅操作码清单，可参考BitBlt函数。

### 返回值

如果函数执行成功，那么返回值为非零，如果函数失败，那么返回值为0。
Windows NT：若想获得更多错误信息，请调用GetLastError函数。
备注：在由hbmMask指定的掩码中，数值1表示在那个位置应使用dwRop指定的前景光栅操作码。数值0表示应使用dwRop指定的背景光栅操作码。如果光栅操作需要源对象，那么掩码矩形必须覆盖源矩形。如果没有覆盖，那么函数会执行失败。如果光栅操作没有要求源对象，那么掩码矩形必须覆盖目标矩形，如果没有覆盖，那么函数会失败。如果在调用函数时，源设备环境中实行旋转或剪切变换，那么会出现错误。然而，允许有其他类型的变换。如果源位图的颜色格式、模式和目标位图不一样，那么该函数对模式或源位图格式，或者两者进行转换，以与目标格式匹配。如果掩码位图不是单色位图，则会出现错误。当正在记录的是增强型图元文件时，如果源设备环境标识为增强型图元文件设备环境，那么会出现错误（该函数返回FALSE）。不是所有设备都支持MaskBlt函数，应用程序应调用GETDeviceCaps函数来确定设备是否支持该函数。如果没有提供掩码位图，那么该函数非常类似BitBlt，它使用前景光栅操作码。ICM：当出现尖头消息时，不进行颜色管理。
Windows CE：Windows CE 1.0版只支持SRCCOPY和SRCINVERT光栅操作。该函数在Windows CE 2.0版与其他Windows桌面平台一样。

### 速查

Windows NT：3.1及以上版本；Windows：不支持；Windows CE：1.0及以上版本；头文件：wingdi.h；库文件：gdi32.lib。