我从他们的窗口句柄(hwnd)屏幕捕获应用程序窗口,并使用GetWindowDC
获取设备上下文,我可以使用它来捕获整个窗口,顶级菜单和滚动条。
HDC hdcWindow = GetWindowDC(hwnd);
HDC hdcMemDC = CreateCompatibleDC(hdcWindow); // or hdcScreen
当我打开子菜单时,例如记事本左上角的“文件”菜单中未捕获该菜单。它似乎不包含在设备上下文中。有没有办法通过应用程序窗口获取所有设备的上下文?
答案 0 :(得分:0)
GDI提供的显示抽象不知道桌面组合所执行的任何魔术 - 窗口DC表示显示器上窗口的区域,如果窗口未显示,或被其他窗口遮挡,则该区域被剪掉并且不存在 - 你不能使用窗口DC对它进行blit,并且在阅读它时你可能会变黑。
因此,要捕获包含来自多个窗口的内容的屏幕区域 - 您需要使用屏幕,而不是窗口,DC。