W3bbo said:
ploe said:
*snip*

Can you post your code?

I'm an idiot. I couldn't find the bug because it wasn't in the window's code, but our base class that it extends. The other windows where the title update does work inherits a different base class.

 

In our base class we disabled painting while the window was in a state of populating data (because we were getting flicker) with this line:

SendMessage(this.Handle, WM_SETREDRAW, 0, IntPtr.Zero);

 

We re-enabled painting when it is done populating with this line:

SendMessage(this.Handle, WM_SETREDRAW, 1, IntPtr.Zero);

 

Then we call Invalidate(true). But that just invalidates the client area, not the non-client area, hence why the title bar was not re-painting.

 

Solution:

Invalidate and paint the ENTIRE window by calling: InvalidateRect() and then UpdateWindow().

 

Sorry for the wild goose chase.