Your first attempt to associate a window handle with a control might be to use a collection of object references in the module where your WindowProc resides. You can key this collection with a string version of the control's hWnd, thereby supplying the control with information about its associated window. This technique gets surprisingly complex, because presence in the collection increases the control's reference count. It is also necessary to walk the collection every time a message is received to find the object associated with the hWnd. Another solution is to attach information about your control object to its window instead.
Several variations are possible.
In this case the long value can be a pointer to your control object. As Any and pass in a pointer to the object directly. From this pointer, you can get a reference to the associated form or control, but, once again, you need to be conscious of the reference count. When you copy this pointer, to get a control reference to call back into, you increment the control's reference count. You then need to release this reference, by replacing the control pointer with a null pointer.