因为vista以后桌面绘制的机制改变了,为了追求半透明效果,所有窗口都是“全显示状态”,没有什么InvalidateRect的无效矩形的概念了,窗口先绘制到系统的代理画布上,然后系统再合成最终显示效果。所以你在vista以后的系统用HDC能截取所有显示内容(即使被覆盖)。但是在XP下面是有无效矩形的概念的。所以你用那个HDC只能拿到当时显示在屏幕上的内容,被覆盖的部分是得不到的。