我正在尝试捕获子窗口的屏幕并在Windows 7中的父表面上呈现它。
HTHUMBNAIL thumbnail = NULL;
HRESULT hr = S_OK;
hr = DwmRegisterThumbnail( hWnd, visualHwnd, &thumbnail );
if( SUCCEEDED( hr ) )
{
...
}
这一直都失败了。 visualHwnd是子窗口,hWnd是父窗口。我也尝试过它没有父子关系,它只是没有绘制任何东西,很好地预期,因为如果语句失败。
可能是什么原因?
以下是我创建父母的方式:
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
孩子:
CreateProcessA( NULL, "PVFOX.exe \"view3.pv\" ", NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &piVisual);
WaitForInputIdle( piVisual.hProcess, INFINITE );
Sleep( 3000 );
EnumWindows(EnumWindowsProc, 0);
SetParent(visualHwnd, hWnd);
答案 0 :(得分:2)
来自MSDN:
hwndDestination
将使用DWM缩略图的窗口句柄。将目标窗口句柄设置为顶级窗口类型以外的任何内容都将导致E_INVALIDARG。
hwndSource
窗口的句柄作为缩略图源。将源窗口句柄设置为顶级窗口类型以外的任何内容都将导致E_INVALIDARG。
如果您传递子窗口,则预计会失败。