I have never needed to change the WinProc on the fly, but you should be able to as you say with SetWindowLong, using the GWL_WNDPROC flag. Oddly the Windows CE docs do not list that flag in the table with the other values, but mentions it further below in the "Remarks" section.
DEXplor uses MFC a great deal. If you've ever used DEXplor, you may note that it contains several advanced hybrid controls, all using MFC (Settings Tree, Tree List, Custom Menus, custom Header controls, etc). The full source code to MFC is available (and included with the standard SDKs), which makes it easy to get down and dirty and achieve the desired control. You can always revert to object handles (HWND, etc), and use standard API calls when needed.
Dan East