There are a few differences with the code in that link:

1. The control intended as the target for the tooltip is derived from CDialog, whereas I am deriving from CWnd (perhaps this isn't a massive difference)
2. The tooltip is implemented using CToolTipCtrl. Perhaps I do need to use this in order to get the behaviour I want, but nothing suggests that so far and I would prefer to avoid it for the time being.

I am able to test when the mouse leaves the CWnd client area; however, I'm doing this using SetCapture and ReleaseCapture, which seems like a stupid way of doing it.