Some applications (one of which might be yours) have a great deal of highly optimized clipboard code already in place. This is especially true if you already have a scheme to handle delayed rendering and snapshot copies of your data. If that's the case, you can implement a data object on top of your existing code, one that implements IDataObject using code such as that which handles the WM_RENDERFORMAT message.
This technique allows you to preserve all your existing code, perhaps restructuring it only to make it more generally accessible to a data object.