gpt4 book ai didi

c++ - PrintWindow 导致标题栏中出现闪烁、奇怪的伪像

转载 作者:可可西里 更新时间:2023-11-01 13:47:09 28 4
gpt4 key购买 nike

我正在尝试截取 Chrome 窗口的屏幕截图。它看起来像这样:

Chrome window

当我使用 PrintWindow 时要获取屏幕截图,我可以在窗口标题栏/Chrome 选项卡区域看到闪烁。捕获的屏幕截图包含 Windows Basic 样式的标题栏的奇怪呈现(即使我的机器运行 Aero 主题):

Captured image

我注意到其他一些应用程序也表现出类似的行为,它们在屏幕上闪烁,但标题栏工件在捕获的屏幕截图中不可见。执行此操作的应用包括 Office 2010、IE 10 和 Trillian 选项卡式聊天窗口——换句话说,扩展非客户区的窗口似乎存在此问题。

重现这个的代码很简单:

void Screenshot(HWND hWnd) {

RECT rc;
GetClientRect(hWnd, &rc);

HDC hdcScreen = GetDC(NULL);
HDC hdc = CreateCompatibleDC(hdcScreen);
HBITMAP hbmp = CreateCompatibleBitmap(hdcScreen,
rc.right - rc.left, rc.bottom - rc.top);
SelectObject(hdc, hbmp);

//Print to memory hdc
PrintWindow(hWnd, hdc, PW_CLIENTONLY);

}

为什么我会看到闪烁和奇怪的视觉伪像?我能做些什么来阻止它?

最佳答案

遇到同样问题的 friend ,请执行以下操作:

const uint PW_RENDERFULLCONTENT = 0x00000002;
PrintWindow(hWnd, hDC, PW_RENDERFULLCONTENT);

关于c++ - PrintWindow 导致标题栏中出现闪烁、奇怪的伪像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19965758/

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