我有1个优化校准,并希望使其成为而不是可屏幕记录的
在.Net中,我一直在使用 SetWindowDisplayAffinity :

WDA_MONTOR = 1;
SetWindowDisplayAffinity(this.Handle, WDA_MONTOR);
现在,我已移至 MFC 以获得本机性能。
我正在使用以下代码,这些代码不会阻止屏幕截图:
HWND Handle = this->GetDlgItem(IDC_SCREEN)->m_hWnd;
SetWindowDisplayAffinity(Handle, WDA_MONITOR);
完整的例子:
if(SetWindowDisplayAffinity(hWnd, WDA_MONITOR)==false)
{
    wchar_t buf[256];
    FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        buf, (sizeof(buf) / sizeof(wchar_t)), NULL);
    AfxMessageBox(buf);
}
GetLastError说“参数不正确”。

最佳答案

根据 Raymond chen :

这意味着我将不得不使用表单句柄,而不是 PictureBox 句柄。
所以改变

HWND Handle = this->GetDlgItem(IDC_SCREEN)->m_hWnd; //PictureBox handle
SetWindowDisplayAffinity(Handle, WDA_MONITOR);

HWND Handle = this->m_hWnd;      //form handle
SetWindowDisplayAffinity(Handle, WDA_MONITOR);
原因:表单窗口是顶层窗口。

关于c++ - SetWindowDisplayAffinity在MFC窗口中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/65091056/

10-11 23:04
查看更多