在XP中复制隐藏或剪切窗口中的内容?

10 c windows user-interface

我需要将隐藏的窗口(BitBlt)的内容复制到另一个窗口.问题是,一旦我隐藏了源窗口,我得到的设备上下文就不再被绘制了.

eli*_*ner 10

您需要的是自Windows XP以来在Win32 API中可用的PrintWindow功能.如果你需要它来使用旧版本的Windows,你可以尝试WM_PRINT,虽然我从来没有能够使它工作.

有一个很好的文章在这里显示了如何在使用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);
}
Run Code Online (Sandbox Code Playgroud)

我应该有一些使用wxPython实现相同功能的Python代码.如果你需要,请给我留言.


HS.*_*HS. 0

也许你可以用InvalidateRect在窗口上触发重绘操作?