views:

163

answers:

1

I've got a component I created that embeds a hardware-accelerated renderer in a TWinControl so you can place it on a form. It works pretty well in most cases, but if I try to resize the control, everything goes blank until the message loop runs and calls the WndProc for the renderer, which is hosted in an external DLL. This means that I need to call Application.ProcessMessages explicitly after I've resized the control in code, which I know is considered bad practice.

Is there any way to put some logic in the control itself to make it invoke the WndProc in the DLL when I change the control's size, so I won't need to call ProcessMessages to get stuff to render right?

+9  A: 

You could call TWinControl.Update instead, which should just SendMessage a WM_PAINT event, so you aren't handling arbitrary messages.

Craig Peterson
That worked. Thanks!
Mason Wheeler