我需要将隐藏的窗口(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/

10-10 14:26