This demo shows a win32 docking system implementation. It's based on a custom DockHost control to host the docked window, and a DockDiamond control to guide the user when docking floating windows.
This video was made a long time ago, but I've since rewrote parts of the system and the demo, and now it's less functional! It is a good starting point however for someone trying to implement something similar. Currently I need to focus on other projects, but if the need arises to use this, I will work on it further.
What you'd need to add in order to have a full docking system:
Loading/Saving window layouts
Handle creating dock host controls when needed in addition to the one you'd normally create inside the main window. For example, in the video, notice how one floating window was docked beside another floating window. Doing that requires creating a dock host control to host them both.
Modify the DockHost control to implement tabbed docking (multiple child windows in the same leaf node)
A different sub-classing mechanism that doesn't use the user data field of windows, as that is often used for other purposes in large applications or frameworks.
The demo and system use code-section's toolbox. A working copy is included for convenience, but consider checking the toolbox out on bitbucket here