What is the difference between GetClientRect and GetWindowRect in WinApi?

Abzac picture Abzac · Sep 26, 2011 · Viewed 33.3k times · Source

What of these should I use in InvalidateRect to refresh my window? And why?

Answer

David Heffernan picture David Heffernan · Sep 26, 2011

The window rect includes the non-client area, i.e. the window borders, caption bar etc. The client rect does not.

GetWindowRect returns a rect in screen coordinates whereas GetClientRect returns a rect in client coordinates.

InvalidateRect receives a rect in client coordinates. If you want to invalidate your entire client area, then pass NULL to InvalidateRect. You could pass in the rect returned by GetClientRect, but it is far simpler and clearer to pass NULL.