gpt4 book ai didi

winapi - BitBlt 无法正确捕获标题栏

转载 作者:行者123 更新时间:2023-12-05 07:57:33 27 4
gpt4 key购买 nike

我正在使用下面的代码使用 bltblt 捕获窗口的屏幕截图。但是,标题栏在捕获的屏幕截图中显示为完全黑色。我在 Windows 8.1 上运行代码。有没有一种方法可以正确捕获标题栏。

// Retrieve the handle to a display device context for the sourceWindow
hdcScreen = GetDC(ss);
// Retrieve the handle to a display device context for the dest window
hdcWindow = GetDC(hWnd);

//Get the client area for size calculation
RECT rcClient;
GetWindowRect(ss, &rcClient);

if (!BitBlt(hdcWindow,
0, 0,
rcClient.right - rcClient.left, rcClient.bottom - rcClient.top,
hdcScreen,
0, 0,
SRCCOPY|CAPTUREBLT))
{
MessageBox(hWnd, L"BitBlt has failed", L"Failed", MB_OK);
goto done;
}

Screenshot, the title bar is highlighted by a read rectangular box.

编辑:我显示屏幕截图的窗口将覆盖整个桌面,并将不断更新其后面窗口的屏幕截图。此外,显示屏幕截图的窗口将始终是最顶层的窗口。

最佳答案

你想要的信息,在window DC上并不是都能得到。主题被绘制在顶部。

如果你想要一个精确的视觉表示,你需要找到窗口(或它的一部分)的屏幕坐标,然后从屏幕 DC 中 blit。


如果没有显示窗口,你可能遇到了无法克服的问题。据我所知,主题(至少从 Windows Vista 开始)不是 Window DC 的一部分,而是使用非 GDI 技术绘制在顶部。 GDI 根本没有绘制复杂混合和透明效果的能力。在 Windows 8 之前,仍然可以选择旧的经典主题,但现在它们已经消失了。您可能会发现标题栏不再在 NCPAINT 处理程序中绘制。

关于winapi - BitBlt 无法正确捕获标题栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771611/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com