I did this by implementing IVsMultiViewDocumentView on my editor object
(which was derived from the following):
public class MultiViewEditor : System.Windows.Forms.UserControl,
IVsWindowPane,
IOleCommandTarget,
IVsMultiViewDocumentView,
IVsWindowFrameNotify,
IVsWindowFrameNotify2
This particular package was sort of a proof of concept for another
customer, and was built against Whidbey Beta1 (which I don't have installed
anymore), so it's not exactly in a buildable/testable state at the moment.
Essentially, what I had was several different "view controls" (derived from
UserControl), that were created on demand, and parented on the
MultiViewEditor control. Then I just hide/show the appropriate control from
my ActivateLogicalView implementation.
You also have to register your logical views in the registry. Each "view
control" was associated with a different guid, so I used/applied the
RegisterEditorLogicalViewAttribute for each logical view, on my main
package object.
I never did get around to implementing a tab control, but if memory serves,
I did add a couple of menu commands to switch between logical views. I'd be
more than happy to zip it up and pass it along. It was built against Beta1
of Whidbey, so it won't compile or build against the later drops, nor will
it compile against Everett. But it might give you some ideas to start.
Feel free to send me an email (just remove the ".online" portion of my
email address in the From: line), and I'll send along a copy.
Sincerely,
Ed Dore [MSFT]
This post is 'AS IS' with no warranties, and confers no rights.