[英]SetWindowDisplayAffinity not works in MFC windows
我有 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
說“參數不正確”。
據雷蒙德陳說:
.NET 版本正在傳遞窗體的 window 句柄(頂級窗口),但您的 MFC 版本正在傳遞控件的 window 句柄(子窗口)。 使用頂級 window。
這意味着我將不得不使用Form句柄而不是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);
原因:表格window 是父表格和頂級表格 window。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.