如何获取窗口,子菜单和上下文菜单的设备上下文?

时间:2016-04-27 15:36:15

标签: c++ winapi screenshot

我从他们的窗口句柄(hwnd)屏幕捕获应用程序窗口,并使用GetWindowDC获取设备上下文,我可以使用它来捕获整个窗口,顶级菜单和滚动条。

HDC hdcWindow = GetWindowDC(hwnd);
HDC hdcMemDC = CreateCompatibleDC(hdcWindow); // or hdcScreen

当我打开子菜单时,例如记事本左上角的“文件”菜单中未捕获该菜单。它似乎不包含在设备上下文中。有没有办法通过应用程序窗口获取所有设备的上下文?

1 个答案:

答案 0 :(得分:0)

GDI提供的显示抽象不知道桌面组合所执行的任何魔术 - 窗口DC表示显示器上窗口的区域,如果窗口未显示,或被其他窗口遮挡,则该区域被剪掉并且不存在 - 你不能使用窗口DC对它进行blit,并且在阅读它时你可能会变黑。

因此,要捕获包含来自多个窗口的内容的屏幕区域 - 您需要使用屏幕,而不是窗口,DC。