我需要将隐藏的窗口(BitBlt)的内容复制到另一个窗口。问题是,一旦我隐藏了源代码窗口,我得到的设备上下文将不再被绘制。
最佳答案
从Windows XP开始,您需要的是Win32 API中提供的PrintWindow函数。如果您需要它与较旧版本的Windows一起使用,则可以尝试WM_PRINT,尽管我从未能够使其正常运行。
有一篇不错的文章here展示了如何使用PrintWindow,这是该文章的相关代码段:
// Takes a snapshot of the window hwnd, stored in the memory device context hdcMem
HDC hdc = GetWindowDC(hwnd);
if (hdc)
{
HDC hdcMem = CreateCompatibleDC(hdc);
if (hdcMem)
{
RECT rc;
GetWindowRect(hwnd, &rc);
HBITMAP hbitmap = CreateCompatibleBitmap(hdc, RECTWIDTH(rc), RECTHEIGHT(rc));
if (hbitmap)
{
SelectObject(hdcMem, hbitmap);
PrintWindow(hwnd, hdcMem, 0);
DeleteObject(hbitmap);
}
DeleteObject(hdcMem);
}
ReleaseDC(hwnd, hdc);
}
我应该有一些使用wxPython实现相同功能的Python代码。如果需要,请给我留言。
关于从XP中的隐藏或剪切窗口中复制内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/242570/