簡體   English   中英

SetWindowDisplayAffinity 不適用於 MFC windows

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM