However in MFC's defense I think one can blame it on Microsoft's study group. I read somewhere that the Afx prefix came from their original design. A framework close in spirit to OWL, but their study group deemed it to high level.
So they made it a thin wrapper over Win16 instead.
On my case, the few cases I was forced outside OWL and MFC into pure C land, I use a set of macros from the Windows SDK.
They weren't properly documented, but with the Windows 3.1 SDK Microsoft created a kind of "type safe" handles and message dispatch macros, which relieved the WndProc pain.
Nevertheless, Xlib was even worse.