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);
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top