views:

259

answers:

0

I have a simple application which is hosting a Managed DirectX Control using WindowsFormsHost. I've overridden the paint methods in the Control to prevent flicker:

protected override void OnPaint(PaintEventArgs e)
{
    if (this.Visible == true) { base.OnPaint(e); }
}

// Don't paint the background unless the control is not visible
protected override void OnPaintBackground(PaintEventArgs e)
{
    if (this.Visible == false) { base.OnPaintBackground(e); }
}

There is a timer which periodically invalidates the Managed DirectX Control so that it will be redrawn.

My problem is that when I lock the computer (WIN+L), and then unlock it, the WPF content around the WindowsFormsHost occasionally does not get fully painted. Various portions of it are not drawn until I drag the window completely out of view. Any ideas on why WPF doesn't finish repainting itself?

Apologies if this is too vague to solve the issue, I'm unable to share more source code.