关于如何拷贝屏幕并保存,这里已经有现成的例子,我也不必去Copy人家了,我一向不喜欢Copy。这里有一个完整的例子,可以看看。
http://msdn.microsoft.com/EN-US/library/windows/desktop/dd183402(v=vs.85).aspx
把屏幕的内容复制到窗口的客户区域中,通常会用BitBlt函数,函数的功能是把一块颜色数据从一个DC复制到另一个DC,这个我也不知道怎么翻译才能通俗一点。这样说吧,就是从源设备上下文的图形表面截取一个矩形区域并且复制到另一个设备上下文的区域中。就像我们要做一个截屏工具一样,把屏幕的一部分内容复制到窗口上。
下面呢,我用另一个函数来进行拷贝——StretchBlt函数,这个函数与BitBlt差不多,不过,它有一点,就是可以根据目标的区域对源图像进行拉伸。
注意看代码。
{
// 屏幕的DC
HDC hdcScreen = GetDC(NULL);
// 本窗口的DC
HDC hdcWindow = GetDC(hWnd);
// 屏幕的宽度
int scrWidth = GetSystemMetrics(SM_CXSCREEN);
// 屏幕的高度
int scrHeight = GetSystemMetrics(SM_CYSCREEN);
// 窗口的客户区域
RECT rectClient;
GetClientRect(hWnd, &rectClient);