Pourquoi DwmRegisterThumbnail pourrait échouer?
Question
Je suis en train de capturer l'écran d'une fenêtre de l'enfant et le rendre sur la surface de parent dans Windows 7.
HTHUMBNAIL thumbnail = NULL;
HRESULT hr = S_OK;
hr = DwmRegisterThumbnail( hWnd, visualHwnd, &thumbnail );
if( SUCCEEDED( hr ) )
{
...
}
Cela échoue tout le temps. visualHwnd est la fenêtre enfant et hWnd est le parent. J'ai aussi essayé sans la relation parent-enfant et il ne qu'attirer rien, bien prévu, car en cas d'échec déclaration.
Quelle pourrait être la raison?
Voici comment je crée le parent:
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
Et l'enfant:
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);
La solution
De MSDN:
-
hwndDestination
La poignée de la fenêtre qui utilisera la vignette DWM. Réglage de la fenêtre de destination poignées pour quoi que ce soit autre qu'un type de fenêtre de niveau supérieur se traduira par une E_INVALIDARG.
-
HwndSource
La poignée de la fenêtre comme étant la source de la vignette. Réglage de la fenêtre source poignées pour autre chose qu'un type de fenêtre de niveau supérieur se traduira par une E_INVALIDARG.
Cela devrait échouer si vous passez une fenêtre enfant.